Ajax:为什么成功显示0?

我在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); } }); 

尝试添加die();exit(); 在函数的最后一行。

可能是你在没有登录的情况下尝试。 所以你需要使用这个动作。

add_action(’wp_ajax_nopriv_my_action’,’my_action_callback’);

你会得到回应。 🙂

我有一个类似的问题,admin-ajax.php返回0,即使我死了()。

我的问题是add_action是在插件默认未加载的文件中声明的。

无论如何,如果您有问题,请在浏览器中检查__.com/.com/wp-admin/admin-ajax.php?action=youraction返回的内容。

找到了。

它需要添加die(); 在function.php中我自己的ajax函数结束之前。

因为在我自己的ajax_action之后, admin-ajax.php有一行脚本:die(’0’); 所以我们需要在die(’0’)之前使用die()脚本。

我错误地添加了“动作”。 您必须在操作前加上wp_ajax_gd_

 add_action('wp_ajax_gd_[ACTION NAME]', '[CALLBACK FUNCTION NAME]') 

并在JS jQuerypost中:

 var data = { 'action': '[ACTION NAME]', }; 

我发现Wordpress的文档对这一部分非常不清楚。

这可能是因为您使用AJAX调用的服务器端脚本返回0 (您在url属性中指定的脚本)。

确保action_name正常。 如果在functions.php中找不到它,则结果为0。

在PHP函数中,确保使用echo而不是return

这是在WordPress主题中发生的。

 function doAjax() { $result = getPosts(); echo json_encode($result, true); die(); } 

我遇到过同样的问题。 我忘了启用插件。 启用插件后,我收到了预期的数据。