wp_ajax function did not call

时间:2017-12-19 作者:J.BizMai

我正在尝试第二次使用hook wp\\u ajax从js脚本中的类调用php方法。有一次我做得很成功,但这次不行了。我不知道为什么。

上下文:我是在一个插件中完成的,而不是在我的主插件中。

我完成了以下所有步骤:

Add my function in my class FooClass

namespace Namespace\\Common;

class FooClass{

    public static function getItems()... 

    public static function getItemsByAjax() {
        error_log( \'getItemsByAjax\' );
        $f_options = self::getItems( $_POST[ \'foo_type\' ] );
        $json = json_encode( $f_options );
        echo $json;
        wp_die();
    }

}

Init this function inside another Class called on an admin page

class OtherClass{

    public function __construct(){
         add_action(\'wp_ajax_getItemsByAjax\', array( \'Namespace\\Common\\FooClass\', \'getItemsByAjax\' ) );
    }

}

Usage in my jQueryScript

jQuery( function($) {

   $(document).ready( function() {
        $(\'.my-button\').click(function() {
             var data = {
                \'action\': \'getItemsByAjax\',
                \'foo_type\' : \'x\'
             };
             $.post( ajaxurl, data, function( response ) {
                var jsonObj = JSON.parse( response );
                console.dir( jsonObj );
             });
        });
   });
});

永远不会调用getItemsByAjax()。我会忘记什么?

2 个回复
最合适的回答,由SO网友:J.BizMai 整理而成

经过几次测试和评论中的一些帮助,我发现了正确的问题:

如果xhr响应返回0,则表示ajax函数未挂接。

在我的例子中,解决方案是使用右钩子初始化我的插件类,如here.

SO网友:Anton Lukin

最后,我在您的代码中找到了问题。您忘记了名称空间路径上的“”。

class OtherClass{

    public function __construct(){
         add_action(\'wp_ajax_getItemsByAjax\', array( \'\\Namespace\\Common\\FooClass\', \'getItemsByAjax\' ) );
    }

}
我希望这对你有帮助。

结束

相关推荐

AJAX加载了更多没有使用正确类别的帖子,并重复了相同的几个帖子

我有一个关于当前项目的页面,在该页面中,我成功设置了AJAX帖子过滤,因此用户可以单击复选框并按对应的类别过滤帖子。我还成功地设置了AJAX帖子加载,用户可以滚动到底部,加载更多帖子。我将描述我的问题,然后发布我的代码。My Problem当AJAX滚动加载新帖子时,它们不在正确的类别(或类别,取决于单击的复选框)。此外,我将其设置为一次加载9篇新帖子,而他们每次只是重复相同的9篇帖子。My Code在我的功能中。php文件,我有以下代码: // Setup AJAX for filter post