我在jquery中使用ajax,当我尝试在弹出窗口中显示结果时。
然后警报始终显示0
success : function(results) {
alert(results); }
编辑:
var dataToSend = { action:"ACTION_NAME", id : "12" }; url_action = 'http://www.______.com/wp-admin/admin-ajax.php'; $.ajax({ url: url_action, type:'POST', data: dataToSend, success:function(results) { alert(results); } });
答案 0 :(得分:35)
尝试在函数的最后一行添加die();
或exit();
。
答案 1 :(得分:12)
可能是你在没有登录的情况下尝试。所以你需要使用这个动作。
add_action('wp_ajax_nopriv_my_action','my_action_callback');
你会得到回应。 :)
答案 2 :(得分:9)
我有一个类似的问题,admin-ajax.php返回0,即使我死了()。
我的问题是add_action是在插件默认未加载的文件中声明的。
无论如何,如果您有问题,请在浏览器中查看__.com/wp-admin/admin-ajax.php?action=youraction返回的内容。
答案 3 :(得分:7)
找到它。
需要在die();
中自己的ajax函数结束之前添加function.php
。
因为在我自己的ajax_action之后admin-ajax.php
中有一行脚本说:die('0');所以我们需要在die('0')之前使用 die()脚本。
答案 4 :(得分:5)
我错误地添加了“动作”。您必须在操作前添加wp_ajax_gd_
。
add_action('wp_ajax_gd_[ACTION NAME]', '[CALLBACK FUNCTION NAME]')
并在JS jQuery帖子中:
var data = {
'action': '[ACTION NAME]',
};
我发现Wordpress的文档对这一部分非常不清楚。
答案 5 :(得分:3)
这可能是因为您使用AJAX调用的服务器端脚本返回0
(您在url
属性中指定的脚本)。
答案 6 :(得分:2)
确保action_name正常。如果在functions.php中找不到它,你将得到0作为结果。
答案 7 :(得分:2)
在PHP函数中,请确保使用的是echo
而不是return
。
这是在WordPress主题中发生的。
function doAjax() {
$result = getPosts();
echo json_encode($result, true);
die();
}
答案 8 :(得分:1)
我有同样的问题。我忘了启用插件。启用插件后,我收到了预期的数据。
答案 9 :(得分:0)
那些得到错误0的人:),action =>'action'
var data = {'action': 'my_action', 'data': form_data };
$.post(ajaxurl, data, function(response) { alert(response);});