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

我有这个函数从列表中获取服务器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读取,因为它会显示选项卡,而Response选项卡会显示下面的内容。

 {"server_id":"123"} 

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

 Content-type: application/json 

更新

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

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

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

谢谢

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

当这两行被注释掉时, 一切似乎都能正常工作 。

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

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

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

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