Firefox可以';在jQuery AJAX响应中解析JSON字符串
在jQueryAjax响应中解析JSON字符串时,我遇到了一个奇怪的问题。这是我的密码:Firefox可以';在jQuery AJAX响应中解析JSON字符串,jquery,ajax,json,firefox,Jquery,Ajax,Json,Firefox,在jQueryAjax响应中解析JSON字符串时,我遇到了一个奇怪的问题。这是我的密码: $.ajax({ type: "POST", url: "Save", data: { expiry: expiry, settings: settings } }).done(function (msg) { alert(msg); var obj = jQuery.parseJSON(msg); if (obj.st
$.ajax({
type: "POST",
url: "Save",
data: {
expiry: expiry,
settings: settings
}
}).done(function (msg) {
alert(msg);
var obj = jQuery.parseJSON(msg);
if (obj.status == "done") {
window.location = obj.redirect;
}
});
在IE、Chrome和Safari上,我得到了JSON字符串的警告,但在Firefox上,我得到了警告
[obj XMLDocument]
在警报中
这里是FF控制台:
obj为null,但我可以在控制台的text属性下看到响应JSON字符串
responses=Object { xml=document, text="{"status":"done","redir...ippetImage\/s\/6abb68"}
这种行为的原因是什么?这不是有效的JSON字符串。无论出于何种目的,JSON字符串都只是JS中赋值的右侧 e、 g
^
所指示的部分对应于将x/y/z变量转换为JSON字符串所得到的部分
如果您不能将json字符串编写为JS赋值,例如
var x = ...json_string_here...;
那么它就不是有效的JSON。您的代码片段可以归结为:
var x = responses=Object { .... }
这是一个语法错误。问题出现在servlet端。我必须设置contentType以使其工作
response.setContentType("text/JSON");
可能是巧合。它在其他浏览器上工作并不意味着它是正确的JSoN。
{“状态”:“完成”,“重定向”:“某些url”}
他们的JSoN字符串有问题吗?response=Object{…}
是Firebug打印对象的方式。你误解了这个问题(还有JSON规范:{a:'b',c:'d'}
是无效的JSON,{a:'b',c:'d'}
是无效的)
response.setContentType("text/JSON");