Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WordPress admin ajax返回“;0“;在面向观众的一侧_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript WordPress admin ajax返回“;0“;在面向观众的一侧

Javascript WordPress admin ajax返回“;0“;在面向观众的一侧,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我是Wordpress插件的新手,所以我想问你们一个问题。我对站点面向查看器的一侧的管理ajax调用有问题。我在wordpress帖子中使用短代码来创建链接,该链接必须调用ajax操作。不幸的是,admin-ajax.php每次都返回0。看看我的代码,也许你能帮我发现我做错了什么 PHP方面: class myClass { public function __construct() { if (defined('DOING_AJAX')) {

我是Wordpress插件的新手,所以我想问你们一个问题。我对站点面向查看器的一侧的管理ajax调用有问题。我在wordpress帖子中使用短代码来创建链接,该链接必须调用ajax操作。不幸的是,admin-ajax.php每次都返回0。看看我的代码,也许你能帮我发现我做错了什么

PHP方面:

class myClass {

    public function __construct() {
        if (defined('DOING_AJAX')) {
            add_action( 'wp_ajax_myAction', array($this, 'myCallback') );
            add_action( 'wp_ajax_nopriv_myAction', array($this, 'myCallback') );
        }
    }

    public function myCallback() {
        echo "test";
        die();
    }
}
Javascript中有Ajax调用:

jQuery(document).ready(function($) {
    var link = $('a.myLink');
    link.on('click', function(e) {
        $.ajax({
            url: 'http://127.0.0.1/myapp/wp-admin/admin-ajax.php',
            type: 'POST',
            data: 'myAction',
            success:function(data) {
                console.log(data);
            },
            error: function(error) {
                console.log(error);
            }
        });   
    });
});

您是否知道为什么该代码不起作用并且admin-ajax.php返回“0”?

尝试使用以下格式的ajax调用:

jQuery(document).ready(function($) {
    var link = $('a.myLink');
    link.on('click', function(e) {
       var details = {
            'action': 'myAction'
        };

        $.ajax({
            url: 'http://127.0.0.1/myapp/wp-admin/admin-ajax.php',
            type: 'POST',
            data: details,  // data format
            success:function(data) {
                console.log(data);
            },
            error: function(error) {
                console.log(error);
            }
        });   
    });
});
希望它能帮助…

解决问题!两件事:

data: 'myAction'
取代

data: {
    action: 'myAction'
}
在我的主插件文件中

if ( is_admin() ) {
    // there should be new myClass() too
} else {
    $class = new myClass();
}
谢谢你的建议

在Ajax请求之前尝试使用Enque

add_action('wp_print_scripts','include_jquery_form_plugin');
function include_jquery_form_plugin(){
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'jquery-form',array('jquery'),false,true ); 
}

您希望输出是什么?@Nikos该代码应该在控制台上输出“test”,不是吗?我不这么认为。a) 您从未运行过
下载文件()
,b)我认为
die()
不允许输出,c)您没有实例化class@Nikos对不起,刚刚编辑了下载文件()到myCallback(),我错了。没有模具()仍然不起作用。据我所知,甚至没有调用myCallback()函数。就像ajax-admin.php不调用do_action('wp_ajax_.$.\u REQUEST['action']),我明白了。恐怕我没有更多的建议了。也许您可以在应该发生的每个步骤中添加
echo
,并查看输出(可能写入文件?)。感谢发布解决方案:)