2012-06-15 16 views
-1

我正在使用json来读取记录。如果我使用它的JavaScript里面这样json不使用ajax,但直接使用时工作正常

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-GET-events.php)页的AJAX,它不会在循环中去

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(); 

请告诉我,我是什么失踪。

由于

+1

如果你的'responseText'是JSON,你为什么使用'eval()'而不是'JSON.parse()'来解析它?另外,您能否包含AJAX请求返回的响应文本? –

+1

1)不要评估。有更好的替代方案 2)使response.txt的console.log –

+0

您的JSON无效。 [测试](http://jsonlint.com) – Quentin

回答

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。

+0

我已经用数据库操作初步使用了第一个json_encode,但它虽然发送了相同的输出[{“eventId”:“1”,“event_name”:“wedding”},{“eventId”:“2”, “event_name”:“interview”}]这就是为什么我试图把简单的JSON文本 –

+0

alert/console.log它,你应该能够看到一个数组。 – greut

相关问题