jQuery,ajax请求在IE上使用JSON没有成功

时间:2011-12-12 21:56:18

标签: jquery ajax json internet-explorer

我做了一个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警告,但也会收到调试弹出窗口。

你可以帮帮我吗?问候。

4 个答案:

答案 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"}]}

实例:http://jsbin.com/umahiq/edit

答案 3 :(得分:0)

也许尝试将contentType设置为“text / json”而不是“application / json”。我在过去使用“application / json”时遇到了一些问题,并且使用“text / json”似乎总是效果更好。