-1

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

私が欠けているものを教えてください。

ありがとう

4

1 に答える 1

1

これはJSON配列としてではなく、1つのオブジェクト(2番目のオブジェクト)として解析されます。

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

ただし、これは正しい配列として解析(評価)する必要があります。

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

PHPを使用しているので、を使用json_encodeしてJSON出力を生成すると、正しいJSONになります。

于 2012-06-15T13:26:35.350 に答える