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

3

所以,我找到了一些关于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是否有任何奇怪的地方。虽然Firebug显示错误,但Firefox仍然可以正常运行,但IE9在此处停止。

我很困惑。任何帮助都将不胜感激。

1个回答

8

在解析响应之前,您需要检查jsonGet.readyState==4 && jsonGet.status==200


1
太棒了,jsonGet.readyState == 4 摆脱了错误。但是加入状态会导致它无法执行。在测试中,我得到的状态是0。感谢您的帮助。 - douggard
使用实际的 .php 文件会返回状态码 200。再次感谢! - douggard
1
太棒了!零状态可能与您的Web服务器有关,与.json文件有关。 - bfavaretto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接