Ajax:为什么成功显示为0?

时间:2011-03-20 20:47:04

标签: jquery ajax wordpress

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

10 个答案:

答案 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);});