我有从列表中获取服务器 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 加载的,我只会得到“parsererror” docs.jquery.com/Plugins/Validation v1.7.
如果您添加插件,即使您设置为 false 或不包含 jsonp 的参数,jquery 也会自动将 jsonp 回调添加到查询字符串中。很奇怪
关于如何修复的任何想法?
谢谢
最佳答案
这里的简单解决方案似乎是 jQuery 1.5 与验证插件的 1.7 不兼容。降级到 jQuery 1.4.x(或按照 philhag 的建议修补或删除验证插件代码)解决了这个问题。
非常感谢此线程中发现冲突的人员。它让我免去了调试 jQuery 代码的麻烦。
关于php - jQuery.ajax() v1.5 为 json 数据返回 "parsererror",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969146/