2012-03-09 3 views
0
$('#myClick2').change(function() { 
    if (this.checked) { 
    $.getJSON('message_center_getMessageLists.asp', {}, function (json) { 

      $.each(json.items, function (i, item) { 
       alert(item.rank.distID); 
       alert(item.rank.name); 
       alert(item.rank.description); 
      }); 
     }) 
     .error(function() { 
      alert("There was an error while trying to make this request; If it persists please contact support"); 
    }); 
    } 
}); 

私は上記のことがうまくいかないようです。何か不足している必要があります。以下は Jsonをループしようとしています

はJSONは私はあなたが望むかもしれないように見える

{ 
    "rank": [ 
     { 
      "distID": "1", 
      "name": "John Doe", 
      "description": "My Rank" 
     }, 
     { 
      "distID": "2", 
      "name": "Jane Dow", 
      "description": "My Rank" 
     }, 
     { 
      "distID": "3", 
      "name": "Robin Doe", 
      "description": "My Rank" 
     }, 
     { 
      "distID": "4", 
      "name": "Ryan Doe", 
      "description": "My Rank" 
     } 
    ] 
} 
+0

何が起きるか起こらないかどうかです。あなたはどんなエラーを受けますか? –

+0

エラーメッセージがありますか?何が動作していないようですか? – talnicolas

+0

出力がありますか? [Javascriptコンソール](http://code.google.com/chrome/devtools/docs/console.html)にエラーメッセージがありますか? – millimoose

答えて

3

をループしようとしていますされています

$ .each(json.rank、機能(I、アイテム)

?それはあなたのJSONレスポンスなら

+1

ええ、私はちょうど私が投稿した直後にそれをテストしたし、今は完全に動作します。質問を削除する方法を見つけようとしていましたが、あなたが正しい答えを出したので、それはあなたのものです。 –

2

、あなたはこれを必要とする:

$.each(json.rank, function (i, item) { 
    alert(item.distID); 
    alert(item.name); 
    alert(item.description); 
}); 

これは、JSONが1つのプロパティー(rank)を持つオブジェクトで、そのプロパティーに反復処理を行うオブジェクトの配列が含まれているためです。したがって、json.rank$.each()に渡すと、配列内の各オブジェクトはitemとなります。いくつかの行を追加する

はそうあなたがより良いそれを見ることができます破る、これはあなたのJSONレスポンスです:

{ 
    "rank": [ 
     {"distID":"1","name":"John Doe","description":"My Rank"}, 
     {"distID":"2","name":"Jane Dow","description":"My Rank"}, 
     {"distID":"3","name":"Robin Doe","description":"My Rank"}, 
     {"distID":"4","name":"Ryan Doe","description":"My Rank"} 
    ] 
} 

それはあなたの成功の引数jsonと等しくなるように設定されたのであれば、あなたは配列がjson.rankだろうかを見ることができます。そして、item.distIditem.descriptionなどの.each()ループ内の各アイテムのプロパティにアクセスします。

-1

よく、項目はランクされません。 rankの値はJSONオブジェクトの配列です。あなたが実際に望むのは、ランクの要素をループすることです。この構文はiffyですが、

$.each(json.items.rank (i, item) { 
    alert(distId); 
}); 
+0

'items'というデータ要素はどこにもありません。これは正しくありません。 – jfriend00

関連する問題