jQuery.ajax()v1.5为json数据返回“parsererror”

时间:2011-02-11 12:46:27

标签: php ajax json jquery

我有这个函数用于从列表中获取服务器ID。该函数始终返回“parsererror”。我查看了返回的JSON数据,但我似乎无法使其正常工作,因为jQuery已经在v1.5中重写了ajax。

function server_id()
{
    $.ajax({
        type: "GET",
        url: "http://localhost/server_list.php",
        dataType: "json", 
        success: function(data, status) {
             alert(status + "\n\n" + data.server_id);
        },
        complete: function(data, status){
                  alert(status);
        }
    });

}

server_list.php

    header('Content-type: application/json');

    $output['server_id'] = '123';
    print json_encode($output);

在firebug Net>> XHR将其读取为JSON,因为它会显示选项卡,“响应”选项卡会显示以下内容。

{"server_id":"123"}

我也尝试过如下设置内容类型标题,但没有运气。

Content-type: application/json

已更新

如果从http://bassistance.de/jquery-plugins/jquery-plugin-validation docs.jquery.com/Plugins/Validation v1.7加载验证插件,我只会收到“parsererror”。

如果添加插件,即使设置为false或者不包含jsonp的parms,jquery也会自动将jsonp回调添加到查询字符串中。非常奇怪

关于如何修复的任何想法?

由于

3 个答案:

答案 0 :(得分:2)

这里的简单解决方案似乎是jQuery 1.5与1.7的验证插件不兼容。降级到jQuery 1.4.x(或以其他方式修补或删除philhag建议的验证插件代码)解决了这个问题。

非常感谢那个确定冲突的线程上的人。它为我节省了一大堆头痛,不得不调试jQuery代码。

答案 1 :(得分:0)

您似乎想要定期进行json通信(dataType是“json”而不是“jsonp”而server_list.php发送json),但您正在设置jsonp个选项。删除jsonpjsonpcallback行。将jsonp设置为false并不意味着您将其停用!

当这两行被注释掉时,everything seems to work fine

答案 2 :(得分:0)

在找到这个帖子之前我遭受了好几天的感谢,感谢那些指着jQuery.validate作为罪魁祸首的人。

在我的测试中,它实际上似乎是jquery.validate-vsdoc.js导致问题,而不是插件本身,以防任何其他人使用。