2009-09-01 13 views
0

次のコードを使用して、Ajax呼び出しから返されたjsonからのクライアント名のリストを作成しようとしています。jQuery/Javascriptオブジェクトから情報を引き出す

次のようにデータがある:

{ "ステータス":1、 "データ":{ "クライアント":[{ "クライアントID": "1"、 "アカウントID": "1"、 "CLIENTNAME ":"アクセスローン軽減 "、"アクティブ ":" 1 "}、{" ClientID ":" 2 "、" AccountID ":" 1 "、" ClientName ":"ビッグタイムビジネス "、"アクティブ ":" 1 "" ClientID ":" 1 "、" ClientName ":" Bill Releford "、" Active ":" 1 "}、{" ClientID ":" 4 "、" AccountID " 「1」、「ClientName」:「Bonnie Silverman」、「Active」:「1」、「ClientID」:「5」、「AccountID」:「1」、「ClientName」:「Dear Holdings」、 {1 "}、{" ClientID ":" 6 "、" AccountID ":" 1 "、" ClientName ":" Calm Dental "、" Active ":" 1 "}、{" ClientID ":" 7 " "ClientID": "8"、 "AccountID": "1"、 "ClientName": "ClientID": "AccountID": "1"、 "ClientName": "Eva Field" 「ClientID」:「9」、「AccountID」:「1」、「ClientName」:「Gallery 825」、「Active」:「1」)、{ "クリ「1」、「1」、「ClientName」、「Greenway Arts Alliance」、「Active」:「1」}、「ClientID」:「11」、「AccountID」:「1」、 「ClientID」:「Active」:「1」)、「ClientID」:「12」、「AccountID」:「1」、「ClientName」:「Ramtin」、「Active」: 1 "}、{" ClientID ":" 13 "、" AccountID ":" 1 "、" ClientName ":" Spabro "、" Active ":" 1 "}、{" ClientID ":" 14 " : "1"、 "ClientName": "LMGA"、 "Active": "1"}、{"ClientID": "15"、 "AccountID": "1"、 "ClientName": "Main Street Business Association" "ClientID": "1"、 "ClientID": "Rabbit Animation"、 "Active": "1"}、{"ClientID": " 「ClientID」:「18」、「AccountID」:「1」、「ClientName」:「1」、「AccountID」:「1」、「ClientName」:「Rooms &ガーデン」、「アクティブ」: 「クライアントID」:「19」、「アカウントID」:「1」、「クライアント名」:「スーシェルック」、「アクティブ」:「1」)、{ "ClientID": "1"、 "ClientName": "Susan Gates"、 "Active": "1"}、{"ClientID": "21"、 "AccountID": "1" 、 "ClientID": "The Park Entertainment"、 "Active": "1"}、{"ClientID": "22"、 "AccountID": "1" "ClientID": "23"、 "AccountID": "1"、 "ClientName": "Westside Media Group"、 "Active": "1" "ClientID": "1"、 "ClientName": "YHD"、 "Active": "1"}、{"ClientID": "25"、 "AccountID" "1"、 "CLIENTNAME": "Discoverfire、株式会社。"、 "アクティブ": "1"}]}}

とコードがそうのようなものです:

 for (var Client in o.data.clients) { 
      $('#list_container').append("<div>"+Client.ClientName+"</div>"); 
     } 

かなりの作業、およびIありませんClientNameプロパティにアクセスするためのいくつかの異なる方法を試しました。 Javascriptは私の最強の言語ではなく、オブジェクトからデータを取得するだけで、PHPオブジェクトと配列に慣れてしまいます。

私はこれが簡単だと確信しています - 誰かが正しい構文を表示できますか?

ありがとうございます!それはそれでjQueryのeachを使用することをお勧めしますので

+0

また、 "Terry とSons Ltd.)"のような名前のクライアントの場合、 "

"+Client.ClientName+"
"は間違っています(名前に '&'が付いたクライアントの場合)。div要素を作成し、$(div).text(Client.ClientName)を設定し、* then *コンテナに追加します。文字列をHTMLに連結することは、ほとんど常に間違っています。 – bobince

+0

ありがとう!私はこれを認識していますが、クリーンなデモが欲しかったです。しかし、持ち出す良いもの。 – Eli

答えて

2

クライアントが配列です:

$.each(o.data,clients, function(idx, client) { 
    // use client.ClientName here 
}); 
+0

私はjQueryのユーティリティをもう少し詳しく調べなければならないことがわかります。美しい - ありがとう! – Eli

+0

ありがとう、楽しんでください。それは便利なものがたくさんあります。 – seth

2

ことだがない非常にどのようにforループ作品。これに対処するより簡単、より正確に、そしてより信頼性の高い方法がそうのような伝統的なfor構文を使用することです:

for (var i = 0; i < o.data.clients.length; i++) { 
    var client = o.data.clients[i]; 
    $('#list_container').append("<div>"+client.ClientName+"</div>"); 
} 

あなたが動作します使用していたfor構文が、それはまだ指数(ない値)を反復です、配列の整数インデックスだけに限定されず、配列プロトタイプや特定の配列オブジェクトに定義された他のプロパティも含めることができます。退屈なi = 0構文を使用して反復することは、このような従来の配列のはるかに良い選択肢です。

+0

両方の非常に良い答え+1。ありがとうございました! – Eli

関連する問題