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
选项。 删除jsonp
和jsonpcallback
行。 将jsonp
设置为false
并不意味着您禁用它!
当这两行被注释掉时, 一切似乎都能正常工作 。
这里的简单解决方案似乎是jQuery 1.5与1.7的validation插件不兼容。 降级到jQuery 1.4.x(或以其他方式修补或删除philhag建议的validation插件代码)解决了这个问题。
非常感谢那个确定冲突的线程上的人。 它为我节省了一大堆不得不调试jQuery代码的麻烦。
在找到这个post之前我遭受了好几天的感谢,感谢那些指着jQuery.validate作为罪魁祸首的人。
在我的测试中,它实际上似乎是jquery.validate-vsdoc.js导致问题,而不是插件本身,以防任何其他人使用。