Javascript WordPress admin ajax返回“;0“;在面向观众的一侧
我是Wordpress插件的新手,所以我想问你们一个问题。我对站点面向查看器的一侧的管理ajax调用有问题。我在wordpress帖子中使用短代码来创建链接,该链接必须调用ajax操作。不幸的是,admin-ajax.php每次都返回0。看看我的代码,也许你能帮我发现我做错了什么 PHP方面: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')) {
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
,并查看输出(可能写入文件?)。感谢发布解决方案:)