0

私はjavascriptに問題があり、この文字列を返すajaxメソッドを呼び出しています:

{
  "ObjectResponse": {
    "Operation": "OK",
    "Response": "SUCCESS",
    "Message": "List of AAA Found",
    "List": [
      {
        "keySource": "gat\/images\/images_set\/apple.jpg",
        "idSiteKey": "1",
        "text": "Apple"
      },
      {
        "keySource": "gat\/images\/images_set\/cat.jpg",
        "idSiteKey": "2",
        "text": "Cat"
      },
      {
        "keySource": "gat\/images\/images_set\/coffee.jpg",
        "idSiteKey": "3",
        "text": "Coffee"
      },
      {
        "keySource": "gat\/images\/images_set\/dog.jpg",
        "idSiteKey": "4",
        "text": "Dog"
      },
      {
        "keySource": "gat\/images\/images_set\/horse.jpg",
        "idSiteKey": "5",
        "text": "Horse"
      },
      {
        "keySource": "gat\/images\/images_set\/police.jpg",
        "idSiteKey": "6",
        "text": "Police"
      },
      {
        "keySource": "gat\/images\/images_set\/tree.jpg",
        "idSiteKey": "7",
        "text": "Tree"
      }
    ]
  }
}

私はこのようにコンテンツを評価します:

xhr.onreadystatechange = ensureReadiness; 
....
responseText = xhr.responseText;

私がjavascriptでそれを解析しようとすると:

response = JSON.parse(responseText);

私がそのようなプロパティresponse.ObjectResponse.Operationにアクセスする場合、私は正しいコンテンツを取得します..しかし、私がリストにアクセスしようとすると、それは常にブレーキをかけます

同じ文字列を試しても、サービスを呼び出す代わりに、コンテンツを変数に割り当てると、リストにアクセスできます。

var myTemporalString ='{"ObjectResponse":{"Operation":"OK","Response":"SUCCESS","Message":"List of Keys Found","List":...';
response.JSON.parse(myTemporalString);

なぜこれが起こっている可能性があるのか​​、何か提案はありますか?

4

2 に答える 2

1

あなたはこの方法を試すことができます、

    xhr.onreadystatechange = function() {
                if (xhr.readyState == 4) {
                    if (xhr.status == 200) {

                        try{
                                var mJsonData = JSON.parse(xhr.responseText);
                            }catch(err){
                                console.log(err);
                                alert(err);
                                return;
                            }

                        for(i=0;i<jsondata.ObjectResponse.List.length;i++){
                                   console.log(jsondata.ObjectResponse.List[i].text);
                                 console.log(jsondata.ObjectResponse.List[i].keySource);
                                   console.log(jsondata.ObjectResponse.List[i]. idSiteKey);
                           }

              }
           }
       }
于 2012-10-26T20:41:14.747 に答える
0

ループを使用してください!

var array = response.ObjectResponse.List;
var len = array.length;
for(i=0; i<len; i++) {
    //Use array[i] to access the list
    array[i].keySource
    array[i].idSiteKey
    array[i].text
}
于 2012-10-26T20:38:14.413 に答える