Javascript - JSON.parse:意外的数据结束 - 使用有效JSON时出错。我究竟做错了什么?

时间:2012-02-17 01:02:28

标签: javascript ajax json

所以,我发现了类似的关于JQuery的问题,你不需要解析它。由于我使用的是AJAX XMLHttpRequest,根据我的理解,解析是必要的。该错误在以下行中给出:

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继续运行(即使firebug显示错误),但IE9此时停止了。

我很难过。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:8)

在解析响应之前,您必须检查是否jsonGet.readyState==4 && jsonGet.status==200