Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有效JSON上的jQuery getJSON语法错误_Jquery_Json_Ajax_Firefox_Mime Types - Fatal编程技术网

有效JSON上的jQuery getJSON语法错误

有效JSON上的jQuery getJSON语法错误,jquery,json,ajax,firefox,mime-types,Jquery,Json,Ajax,Firefox,Mime Types,我有以下json文档 // json.json [ { "title":"title1", "value":12234 }, { "title":"title2", "value":"some text" }, { "title":"title3", "value":"12qwerty234" }, { "title":"title4",

我有以下json文档

// json.json
[  
   {  
      "title":"title1",
      "value":12234
   },
   {  
      "title":"title2",
      "value":"some text"
   },
   {  
      "title":"title3",
      "value":"12qwerty234"
   },
   {  
      "title":"title4",
      "value":123.5
   }
]   
我正在使用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>'));
        });
    });
});
$(文档).ready(函数(){
$.getJSON(“json.json”,{},函数(结果){
$。每个(结果、功能(i、obj){
$(“表格”)。追加($(''+对象标题+'');
$(“表格”)。追加($(“
”); }); }); });
我的问题是,我在Firefox中遇到了语法错误。我将
json.json
作为本地文件加载。 这是一个屏幕截图(错误显示“第1行出现语法错误”

注意,该表单已成功生成

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


我认为,由于json文件是本地文件而产生的错误。尝试使用您的Web服务器加载,如nginx或apache。

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

您可以忽略这一点,或者自己指定
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>'));
        });
    }
});
$.ajax({
数据类型:“json”,
url:“json.json”,
mimeType:“应用程序/json”,
成功:功能(结果){
$。每个(结果、功能(i、obj){
$(“表格”)。追加($(''+对象标题+'');
$(“表格”)。追加($(“
”); }); } });

PS:使用普通XHR您将使用

我在Web服务器上运行了相同的代码,没有生成语法错误。当从加载时,它会生成语法错误file:///. 所以,这基本上就是“方案”。

我在设置正确的json时,遇到了json中语法错误4的相同问题

我无法找到解决方案,然后我使用了一个技巧,将json转换为php数组。 如果你觉得它有用的话,你也可以用它

示例代码:

$json = '
{

}",

$json=str_replace(“{”,”,$json); $json=str_replace(“}”、“”、$json)

$jsonArr=explode(“,”,$json); $jsonArray=array()

foreach($jsonArr作为$json){

}


打印(jsonArray)

错误说明了什么?没什么,它只是指向json文件的第一行。我刚刚在Firefox(23.0.1)上测试过,它对我来说很好。JSON文件是否包含不可见字符?尝试通过复制和粘贴帖子中的JSON来重新创建JSON文件。您是否将该JSON文件保存为UTF8?我尝试从我的目录中运行
python-m SimpleHTTPServer
,但没有成功。它应该是吗?是的,它应该工作得很好。最后用Python版本2.7.3对它进行了测试,没有出现任何错误。我在localhost/local xml上也失败了,使用了overrideMimeType(“application/json;charset=UTF16”)对字符,如u,ä,ö
  "title":"title4",
  "value":123.5
    $jsonTmpArr = explode(":", $json);
    $jsonArray[trim($jsonTmpArr[0])] = trim($jsonTmpArr[1]);