我在尝试解析jQuery AJAX响应中的JSON字符串时遇到了一个奇怪的问题。这是我的代码:
$.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 ,但我可以在文本属性
下的控制台中看到响应JSON字符串responses=Object { xml=document, text="{"status":"done","redir...ippetImage\/s\/6abb68"}
出现这种行为的原因是什么?
答案 0 :(得分:5)
问题出在servlet端。我必须设置内容类型才能使其正常工作。
response.setContentType("text/JSON");
答案 1 :(得分:1)
这不是有效的JSON字符串。出于所有意图和目的,JSON字符串只是JS中赋值的右侧。
e.g。
var x = 7;
^
var y = [1,2,3];
^^^^^^^
var z = {a:'b', c: 'd'};
^^^^^^^^^^^^^^^
^
指示的部分对应于将x / y / z变量转换为JSON字符串时所获得的部分。
如果你不能把你的json字符串写成JS赋值,例如
var x = ...json_string_here...;
然后它不是有效的JSON。你的代码片段归结为:
var x = responses=Object { .... }
这是语法错误。