WordPress AJAX-如何返回内容的操作

时间:2019-03-28 作者:Martin Barker

因此,我正在尝试为我正在构建的插件设置AJAX操作。

使用时/wp-admin/admin-ajax.php?action=beacon_podio-get_apps

我只是hello world0 我没有看到Request is valid 或者Invalid request 看来行动没有被调用

我想我错过了什么,但我不确定我错过了什么。

class testClass {

    public function __construct(){
        echo "hello world";
        add_action(\'wp_ajax_beacon_podio-get_apps\', array($this, "get_apps"));
    }

    public function get_apps(){
        if(isset($_POST[\'app_id\'])){
            $app_id = $_POST[\'app_id\'];
            die("Request is valid");
        }else{
            die("Invalid request");
        }
    }
}
new testClass();
我一直在看书https://codex.wordpress.org/AJAX_in_Plugins 但它缺少我应该使用的URL。

Output from wordpress

2 个回复
最合适的回答,由SO网友:Martin Barker 整理而成

这似乎是WordPress中的一个bug,回到这里并升级到版本5.2。由于某种原因,问题似乎已经解决。has\\u操作未能找到操作,不确定原因,但似乎已经解决。

SO网友:Krzysiek Dróżdż

好吧,我想你有点误解了。。。

你正确地完成了第一部分。所以是的-AJAX请求应该发送到wp-admin/admin-ajax.php 而且应该有action 请求中设置的参数(作为POST或GET)。

但是,你做错了。使用以下代码注册操作:

add_action(\'beacon_podio-get_apps\', array($this, "get_apps"));
但id应该是:

add_action(\'wp_ajax_beacon_podio-get_apps\', array($this, "get_apps"));
或(对于匿名用户)

add_action(\'wp_ajax_nopriv_beacon_podio-get_apps\', array($this, "get_apps"));
因此,为了明确起见,正确的挂钩是:

  • wp_ajax_(action)
  • wp_ajax_nopriv_(action)
其中(action)是作为动作参数发送的动作。

相关推荐

admin-ajax.php mixed content

无法从https访问admin ajax。在我的js中,我写道$.ajax({ url: \'https://\'+window.location.host+\'/admin/admin-ajax.php\', type:\'post\', data:\'action=bid_now_live_me&_pid=\'+ mypid , success: function (data) { 所以我把每个url都改成了http