我正在使用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中调用(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();
请告诉我我错过了什么。
由于
答案 0 :(得分:1)
这不是作为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。