【发布时间】:2011-06-25 13:04:12
【问题描述】:
我有这个从列表中获取服务器 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”。
如果您添加插件 jquery 会自动将 jsonp 回调添加到查询字符串,即使您设置为 false 或不包含 jsonp 的参数。很奇怪
关于如何解决的任何想法?
谢谢
【问题讨论】:
-
请发布生成此输出的代码 sn-p
-
@pinusnegra 编辑了上面的帖子以显示输出。看不到差异,因为您可以看到显示其 JSON 的萤火虫输出
-
为什么会有jsonpCallback?这应该是 AJAX 请求还是 JSONP?
-
@Dan Grossman 从 jQuery 1.5 开始,将 jsonp 选项设置为 false 会阻止 jQuery 将“?callback”字符串添加到 URL 或尝试使用“=?”为转型。在这种情况下,您还应该明确设置 jsonpCallback 设置。例如 { jsonp: false, jsonpCallback: "callbackName" }
-
尝试在 jquery-1.5.js 文件中的
parseJSON()/ajaxConvert()中设置一个断点,看看那里发生了什么。