Ajax:为啥成功显示为 0?
Posted
技术标签:
【中文标题】Ajax:为啥成功显示为 0?【英文标题】:Ajax : Why success displays 0?Ajax:为什么成功显示为 0? 【发布时间】:2011-07-19 06:55:12 【问题描述】:我将 ajax 与 jquery 一起使用,当我尝试在弹出窗口中显示结果时。
然后alert总是显示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。我们需要查看 ajax 请求调用的代码以及发送给它的参数。您究竟希望重播什么? 你不能像这样使用 AJAX 进行跨域请求。而是发送服务器端请求。 @frictionless @Darin Request : actionACTION_NAME
and id 12
— Response blablabla 0
— html blablabla 0
— 是的,同源策略
你的意思是有响应,但0
总是被附加到它上面?
@Steffi 好的,die('0')
是附加该零的命令。在您自己的函数末尾添加die()
,根据您发布的帖子,它应该消除零。
【参考方案1】:
尝试在函数的最后一行添加die();
或exit();
。
【讨论】:
【参考方案2】:可能是您尝试不登录。所以你需要使用这个动作。
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
你会得到回应。 :)
【讨论】:
【参考方案3】:我遇到了 admin-ajax.php 返回 0 的类似问题,即使我有 die()。
我的问题是 add_action 是在插件默认未加载的文件中声明的。
无论如何,如果您有问题,请在浏览器中检查 __.com/wp-admin/admin-ajax.php?action=youraction 返回的内容。
【讨论】:
如果是post请求就不会返回了,mart 我有同样的问题,它不在默认加载的文件中。【参考方案4】:找到了。
需要在function.php
我自己的ajax函数结束前加上die();
。
因为在我自己的 ajax_action 之后,admin-ajax.php
中有一行脚本:die('0');所以我们需要在die('0')之前die()脚本。
【讨论】:
【参考方案5】:我错误地添加了“动作”。您必须在您的操作前加上 wp_ajax_gd_
。
add_action('wp_ajax_gd_[ACTION NAME]', '[CALLBACK FUNCTION NAME]')
在 JS jQuery 帖子中:
var data =
'action': '[ACTION NAME]',
;
我发现 Wordpress 的文档对这部分内容非常不清楚。
【讨论】:
【参考方案6】:这可能是因为您使用 AJAX 调用的服务器端脚本返回 0
(您在 url
属性中指定的那个)。
【讨论】:
@Steffi,所以当您查看FireBug 时,究竟发送的请求和响应是什么?你确定你尊重same origin policy? Request : actionACTION_NAME
and id 12
— Response blablabla 0
— HTML blablabla 0
— 是的,同源策略【参考方案7】:
确保 action_name 没问题。如果在 functions.php 中没有找到,结果会是 0。
【讨论】:
【参考方案8】:在您的 PHP 函数中,确保您使用的是 echo
而不是 return
。
这发生在我的 WordPress 主题中。
function doAjax()
$result = getPosts();
echo json_encode($result, true);
die();
【讨论】:
【参考方案9】:我有同样的问题。我忘记启用插件了。启用插件后,我收到了预期的数据。
【讨论】:
+1 哇刚刚遇到了同样的问题。不敢相信这是问题所在(刘海撞到桌子)【参考方案10】:那些得到错误 0 :), action => 'action'
var data = 'action': 'my_action', 'data': form_data ;
$.post(ajaxurl, data, function(response) alert(response););
【讨论】:
问题中的代码显示他们已经在设置action
以上是关于Ajax:为啥成功显示为 0?的主要内容,如果未能解决你的问题,请参考以下文章
为啥Bootstrap datepicker不能在ajax成功功能中工作[重复]