我做了一个AJAX调用,它适用于FF& Chrome浏览器但不支持IE 7-8-9。我正在从我的域中加载JSON文件:
$.ajax({
url: 'js/jquery.desobbcode.json',
dataType: 'json',
cache: false,
success: function(json) {
alert('ok');
},
error: function(xhr, errorString, exception) {
alert("xhr.status="+xhr.status+" error="+errorString+" exception="+exception);
}
});
我还尝试添加contentType: 'application/json'
,但收到的输出相同:
xhr.status=200
error=parsererror
exception=SyntaxError Unterminated string constant
我用JSONLint检查了我的JSON文件,没关系。我检查是否有额外的逗号,内容也被修剪。 See my JSON file
如果我放dataType: 'text'
,我会收到OK警告,但也会收到调试弹出窗口。
答案 0 :(得分:5)
IE is known to have issues with implied content types.
... Internet Explorer 7中的新XmlHttpRequest类没有直观地实现setRequestHeader。它不是设置指定的标题,而是附加值。
尝试指定contentType
并检查从服务器返回的内容:
$.ajax({
url: 'js/jquery.desobbcode.json',
dataType: 'json',
contentType: "application/json; charset=utf-8",
...
});
您可能还想尝试发送空白数据:
$.ajax({
url: 'js/jquery.desobbcode.json',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: {}
...
});
答案 1 :(得分:2)
如果您使用php脚本将json作为字符串回显
header('Content-Type: application/json; charset=utf-8');
之前
echo $jsonString
线。
答案 2 :(得分:1)
这是JSON中的换行符。这应该在IE中解析:
{"inputButton":[{"id":"desoBBCode_bold","value":"Gras","tag":"b"},{"id":"desoBBCode_italic","value":"Italique","tag":"i"},{"id":"desoBBCode_underline","value":"Souligné","tag":"u"},{"id":"desoBBCode_image","value":"Image","tag":"img"},{"id":"desoBBCode_link","value":"Lien","tag":"url"},{"id":"desoBBCode_quote","value":"Citation","tag":"quote"}],"selectTextSize":[{"text":"Taille","value":""},{"text":"Trèstrèspetit","value":"1"},{"text":"Trèspetit","value":"2"},{"text":"Petit","value":"3"},{"text":"Gros","value":"4"},{"text":"Trèsgros","value":"5"},{"text":"Trèstrèsgros","value":"6"}],"selectTextColor":[{"text":"Couleur","value":"a"},{"text":"Rouge","value":"red"},{"text":"Bleu","value":"blue"},{"text":"Vert","value":"green"}]}
答案 3 :(得分:0)
也许尝试将contentType设置为“text / json”而不是“application / json”。我在过去使用“application / json”时遇到了一些问题,并且使用“text / json”似乎总是效果更好。