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(); }
我遇到过同样的问题。 我忘了启用插件。 启用插件后,我收到了预期的数据。