WordPress前端AJAX。返回0:?

时间:2011-10-24 作者:KodeFor.Me

我已经创建了适当的代码来处理WordPress上的AJAX请求,但我从服务器得到了0作为响应。

我的插件代码如下:

class my_plugin
{
    function my_plugin()
    {
        add_action(\'wp_ajax_do_ajax\', array($this, \'do_ajax\'));
        add_action(\'wp_ajax_nopriv_do_ajax\', array($this, \'do_ajax\'));
        add_action(\'wp_head\', array($this, \'init\'));
    }

    function init()
    {
        ?>
        <script type="text/javascript">
            var ajaxurl = "<?php echo admin_url(\'admin-ajax.php\'); ?>";
        </script>
        <?php
    }

    function do_ajax()
    {
        print_r($_POST);
        die();
    }
}

$mp = new my_plugin();
这是我的jQuery代码:

jQuery(document).ready(
    function($)
    {
        $.ajax(
            {
                type: "POST",
                url: ajaxurl,
                data: {action: "do_ajax", some_data: "some_value"},
                success: function(e)
                {
                    console.log(e);
                }
            }
        );
    }
);

1 个回复
最合适的回答,由SO网友:EAMann 整理而成

我建议使用一些不同的工具来调试交互。首先,使用许多浏览器内置的调试控制台,您可以确切地看到jQuery通过AJAX发送的内容。如果所有其他操作都失败,点击F12,它将在几乎所有内容中启动控制台窗口。如果不起作用,请安装Firebug 对于Firefox,因此您有一个控制台窗口。

控制台将显示您的网络活动。打开控制台后,刷新页面。它应该记录您的AJAX请求,以便您可以确保请求正在将您想要的数据发送到您想要的URL。

或者,您可以使用以下工具Fiddler 拦截请求和响应。然后,您可以准确地检查发送的内容、发送到哪里以及响应的内容。

话虽如此。。。我们帮不了你多少了。原因如下:

  1. You didn\'t give us all of the code, 所以我们不能在我们的服务器上安装你的插件来测试东西。你在哪里打电话$mp = new my_plugin();, 例如如果没有在正确的位置调用它,那么您的代码将无法启动
  2. We don\'t know how your site is set up. 是你吗enqueue在尝试使用jQuery AJAX之前使用jQuery?主题的输出是什么样子的my_plugin() 在你的主题里admin-ajax.php 甚至可能看不到你的钩子。因此,如果不知道您在哪里以及如何使用此代码,除了建议使用调试工具之外,我们无法提供任何帮助。

结束