有效JSON上的jQuery getJSON语法错误

Ale*_*kov 16 ajax firefox jquery json mime-types

我有以下json文档

// json.json
[  
   {  
      "title":"title1",
      "value":12234
   },
   {  
      "title":"title2",
      "value":"some text"
   },
   {  
      "title":"title3",
      "value":"12qwerty234"
   },
   {  
      "title":"title4",
      "value":123.5
   }
]   
Run Code Online (Sandbox Code Playgroud)

我正在使用jQuery来加载它.这是代码:

$(document).ready(function(){
    $.getJSON("json.json", {},function(result){
        $.each(result, function(i, obj) {
            $("form").append($('<label for="'+i+'">'+obj.title+'</label>'));
            $("form").append($('<input id="'+i+'" value="'+obj.value+'" type="text"/><br>'));
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,我在Firefox中遇到语法错误.我加载json.json为本地文件.这是一个截图(错误显示"第1行的语法错误")

在此输入图像描述

请注意,该表单已成功生成.

编辑: 这是运行python时Chrome的另一个屏幕截图SimpleHTTPServer:

在此输入图像描述

nma*_*ier 26

发生这种情况的原因是因为您使用的是本地文件,因此暗示了mime类型的"text/xml",因此Firefox会尝试将其解析为.responseXML基础XHR对象的XML .这当然失败了.

您可以忽略它,或指定您mimeType自己:

$.ajax({
    dataType: "json",
    url: "json.json",
    mimeType: "application/json",
    success: function(result){
        $.each(result, function(i, obj) {
            $("form").append($('<label for="'+i+'">'+obj.title+'</label>'));
            $("form").append($('<input id="'+i+'" value="'+obj.value+'" type="text"/><br>'));
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

PS:使用普通的XHR overrideMimeType()