2013-08-17 68 views
15

的jQuery的getJSON語法錯誤我有上的有效JSON

// json.json 
[ 
    { 
     "title":"title1", 
     "value":12234 
    }, 
    { 
     "title":"title2", 
     "value":"some text" 
    }, 
    { 
     "title":"title3", 
     "value":"12qwerty234" 
    }, 
    { 
     "title":"title4", 
     "value":123.5 
    } 
] 

我使用jQuery加載它下面的JSON文件。這裏是代碼:

$(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>')); 
     }); 
    }); 
}); 

我的問題是,我在Firefox中得到一個語法錯誤。我加載json.json作爲本地文件。 下面是一個屏幕截圖(錯誤說 「位於第1行的語法錯誤」

enter image description here

筆記,這種形式已成功生成。因爲JSON文件的產生

enter image description here

+1

錯誤在說什麼? – adeneo

+1

沒什麼,它只是指向json文件的第一行。 –

+0

我剛剛在Firefox(23.0.1)上測試過,它對我來說工作正常。你的JSON文件可以包含一個不可見的字符嗎?嘗試通過從帖子中複製並粘貼JSON來重新創建JSON文件。 – AlliterativeAlice

回答

20

發生這種情況的原因是因爲您使用的是本地文件,因此暗含了MIME類型的「text/xml」,因此Firefox會嘗試將其解析爲底層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>')); 
     }); 
    } 
}); 

PS:使用普通XHR你會使用overrideMimeType()

0

我認爲,錯誤是本地文件:

編輯:運行蟒蛇SimpleHTTPServer 下面是來自Chrome的另一個屏幕截圖。嘗試加載你的網絡服務器,如nginx或apache。

2

我跑了一個網絡服務器相同的代碼,並且不產生語法錯誤。從file:///加載時會產生語法錯誤。所以,它基本上是「計劃」。

+0

嗯,我試圖從我的目錄運行'python -m SimpleHTTPServer',但那不起作用。應該嗎? –

+0

是的,它應該可以正常工作。在Python 2.7.3版本的最後我測試了它,它沒有任何錯誤。 – aadel