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 : action ACTION_NAME and id 12 — Response blablabla 0html 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 : action ACTION_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成功功能中工作[重复]

如何确定为啥 jQuery ajax $.post 请求不成功?

为啥ajax调用在每次调用时都会输入成功和错误块?

为啥AJAX请求处理成功了,还报404错误?

获取并显示ajax响应成功数据

为啥AJAX请求处理成功了,还报404错误?