我在Wordpress插件中很新,所以我有个问题。我在站点的面向浏览器的一侧遇到admin-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”?
答案 0 :(得分: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);
}
});
});
});
希望它有所帮助...
答案 1 :(得分:0)
解决!两件事:
data: 'myAction'
替换为
data: {
action: 'myAction'
}
在主插件文件中我有
if ( is_admin() ) {
// there should be new myClass() too
} else {
$class = new myClass();
}
感谢您的建议!
答案 2 :(得分:0)
在您的Ajax请求之前尝试使用Enque JQuery Form Plugin。
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 );
}