JSON 不适用于 Ajax,但直接使用时工作正常


json not working with ajax but working fine when used directly

我正在使用json来读取记录。如果我像这样在javascript中使用它,它工作得很好

var events=[{eventId:"1", event_name:"wedding"},{eventId:"2", event_name:"interview"}]

然后循环它以读取记录

for(var events_count=0;events_count<events.length;events_count++)
{
//read records and works perfectly fine
}

但是当我使用 ajax 做同样的事情时,它不起作用。我什至把文字

{eventId:"1", event_name:"wedding"},{eventId:"2", event_name:"interview"}

在 ajax called(ajax-get-events.php) 页面中,它不会进入循环内部

    var xmlhttp;
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function(){
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        //got data in same format as above in xmlhttp.responseText and used eval to parse it
         events = eval('(' + xmlhttp.responseText + ')');
        //I have tried to alert(events) and it shows [object object]
           for(var events_count=0;events_count<events.length;events_count++)
            {
                //loop doesn't work at all
            }
       }
    }
    xmlhttp.open("GET","ajax-get-events.php",true);
    xmlhttp.send();

请告诉我我错过了什么。

谢谢

这不是解析为 JSON 数组,而是解析为一个对象(第二个):

{eventId:"1", event_name:"wedding"},{eventId:"2", event_name:"interview"}

但这应该被解析(读取 eval'd)为正确的数组:

[{"eventId":"1", "event_name":"wedding"},{"eventId":"2", "event_name":"interview"}]

由于您使用的是 PHP,请使用 json_encode 生成 JSON 输出,它将是正确的 JSON。