问题描述

我特别是 jQuery 和 AJAX 比较新。我有一个小问题,返回值总是为 0,虽然我认为这实际上是成功的消息,它没有返回任何东西。

我已经浏览了 Google 的节目,我在 PHP 回调中使用了 die() 函数,我相信 add_actions 是正确的。

我在一个本地的主机工作,虽然我怀疑这影响到它,这一切都在管理,而不是前端。我还检查了 js 是入队和本地化的。

我在 chrome 开发者区域收到 200 OK 消息。

我还测试了 http://codex.wordpress.org/AJAX_in_Plugins 的基本 AJAX,并且还返回 0,这使我想知道它是否与下面的代码不同。

现在我只是想把它发回给 jQuery 。任何帮助将不胜感激。

jQuery

jQuery(document).ready(function(){
    jQuery('.cl_link_buttons').val('id').click(function() {

            var currentid = jQuery(this).attr('id');

            //alert(currentid);
            console.log(currentid);

            jQuery.ajax ( data = {
                action: 'cleanlinks_ajax_get_post_data',
                url: ajaxurl,
                type: 'POST',
                dataType: 'text',
                "currentid" : currentid

            });

            jQuery.post(ajaxurl, data, function(response) {

                var dataz = response;
                alert( dataz );
                console.log (dataz); //show json in console


            });

            return false;

    }); //end click event
}); //end doc ready

PHP

add_action("wp_ajax_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
add_action("wp_ajax_nopriv_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");

function cleanlinks_ajax_get_post_data() {

$from_ajax =  $_POST['currentid'];

echo "do" . $from_ajax . "something";

die();


}

最佳解决方案

0 响应意味着该操作未设置 (在 ajax 数据中) 或该动作的回调函数无法找到。

次佳解决方案

您需要做的是在函数的末尾添加 die();

看到原因和更多在这里:http://codex.wordpress.org/AJAX_in_Plugins

笔记:

  • 在执行 die 之前,应该使用 echo 。这将防止服务器错误,并在调试时有所帮助。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。