2012-06-15 4 views
-1

json을 사용하여 레코드를 읽습니다. 그때 루프가 기록 json이 아약스와 함께 작동하지 않지만 직접 사용하면 잘 작동합니다.

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

하지만이 같은 사용 아약스를하고있는 중이 야 때, 그것은 작동하지 않습니다를 읽고이

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

같은 자바 스크립트 내에서 사용할 경우 완벽하게 잘 작동합니다. 심지어 (아약스 - 수 - events.php) 페이지라는 아약스의 텍스트

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

넣어 가지고, 그것은

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이라면 왜 구문 분석하기 위해'JSON.parse()'대신에'eval()'을 사용하고 있습니까? 또한 AJAX 요청에서 반환 된 응답 텍스트를 포함 할 수 있습니까? –

+1

1) 평가하지 마십시오. 더 나은 대안이 있습니다 2) responseText의 console.log를 만드십시오 –

+0

JSON이 유효하지 않습니다. [테스트 (http://jsonlint.com) I는 [ 를 만들어 유효 JSON로 변환 한 – Quentin

답변

1

이것은 JSON 배열로서 해석되지 않지만, 하나의 오브젝트 (두 번째) 등 :

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

하지만이 올바른 배열로 (eval'd 읽기) 해석되어야 : 당신이 PHP를 사용하고 있기 때문에

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

, 당신의 JSON 출력을 생성 json_encode를 사용, 그것은 올바른 JSON 수 있습니다.

+0

데이터베이스 작업에 처음 json_encode를 사용했지만 동일한 출력 [{ ""eventId ":"1 ","event_name ":"wedding "}, {"eventId ":"2 " "event_name": "interview"}] 그 이유는 간단한 json 텍스트 –

+0

alert/console.log를 넣으려고했기 때문에 배열을 볼 수 있어야합니다. – greut

관련 문제