2012-02-17 48 views
2

所以,我發現了一些你不需要解析的關於JQuery的類似問題。由於我使用AJAX XMLHttpRequest,據我所知,解析是必要的。上線時給出的錯誤:Javascript - JSON.parse:意外的數據結束 - 使用有效的JSON時出錯。我究竟做錯了什麼?

text = JSON.parse(jsonGet.responseText); 

錯誤:

JSON.parse: unexpected end of data 
text = JSON.parse(jsonGet.responseText); 

功能的相關部分:

function populateList(){ 
//retrieves list from the server, adds it to the option box 
    if(toggle == 0){ 
     var jsonGet = new XMLHttpRequest(); 
     jsonGet.open("GET","./json/GetAllEvents.php",true); 
     jsonGet.onreadystatechange = function() { 
       text = JSON.parse(jsonGet.responseText); //ERROR HERE 
       //updating html with data received 
     }; 
     jsonGet.send(); 
     toggle = 1; 
    } else {} 

}; 

的JSON返回看起來像這樣(不換行):

{"success":true, 
"number_of_rows":2, 
"data":[ 
    {"id":"7","event_name":null,"day":3,"start_time":510,"end_time":617}, 
    {"id":"8","event_name":null,"day":1,"start_time":510,"end_time":617} 
]} 

JSONLint表示上述內容有效。我想我會看看XMLHttpRequest是否有什麼奇怪的事情。 Firefox繼續運行(即使螢火蟲顯示錯誤),但IE9停止在這一點上。

我很難過。任何幫助表示讚賞。

回答

5

在解析響應之前,您必須檢查jsonGet.readyState==4 && jsonGet.status==200

+1

真棒,jsonGet.readyState == 4擺脫了錯誤。在中添加狀態會導致它不執行。我使用.json文件測試的狀態爲0.感謝您的幫助。 – douggard 2012-02-17 01:34:19

+0

使用實際的.php文件給出狀態200.再次感謝! – douggard 2012-02-17 01:38:50

+1

太棒了!零狀態可能與您的網絡服務器與.json文件相關。 – bfavaretto 2012-02-17 01:46:06

相關問題