WordPress admin-ajax returns “0” 在面向查看者的一侧
WordPress admin-ajax returns "0" on the Viewer-Facing Side
我是 Wordpress 插件方面的新手,所以我有一个问题要问你们。我在网站面向查看者的一侧调用 admin-ajax 时遇到问题。我在 wordpress 帖子中使用短代码来建立链接,该链接必须调用 ajax 操作。不幸的是每次都是 admin-ajax.php returns 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 returns“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 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 );
}
我是 Wordpress 插件方面的新手,所以我有一个问题要问你们。我在网站面向查看者的一侧调用 admin-ajax 时遇到问题。我在 wordpress 帖子中使用短代码来建立链接,该链接必须调用 ajax 操作。不幸的是每次都是 admin-ajax.php returns 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 returns“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 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 );
}