2011-11-12 17 views
0

見つける:私は、各コードをループにしたい私は、次の<strong>JSON構造</strong>持つオブジェクトのプロパティ数

{ 
     "codes":[ 
      { 
        "id":"1",   
        "code":{     
         "fname":"S", 
         "lname":"K" 

       } 
      }, 
      { 
        "id":"2",    
        "code":{     
         "fname":"M", 
         "lname":"D"     
       } 
      } 
    ] 
    } 

を、各コード内

 success: function (data) {    
      var x; 
      for (x = 0; x < data.codes.length; x++){    
       alert(data.codes[x].id); // alerts the ID of each 'codes' 
       alert(data.codes[x].code.length) // returns undefined 
      } 
    } 

のプロパティの数を警告これはどうすればいいですか?

答えて

2

"code"はオブジェクトであり配列ではないという問題があります。あなたは、JavaScriptのオブジェクトの長さを取得することはできません。以下のような "for in"ループでオブジェクトをループする必要があります:(警告:未テスト)。

success: function (data) {    
     var x, codeProp, propCount; 
     for (x = 0; x < data.codes.length; x++){    
      alert(data.codes[x].id); // alerts the ID of each 'codes' 
      propCount = 0; 
      for (codeProp in data.codes[x]) { 
       if (data.codes[x].hasOwnProperty(codeProp) { 
        propCount += 1; 
       } 
      } 

      alert(propCount) // should return number of properties in code 
     } 
} 
0
if (data && rowItem.code) { 

あなたが直接それをしたい場合は、:

if (data && data.codes[x].code) { 

ノート、「データ」のチェックをあなたのコードは、「データ」の要素をループして、無用である(データは「doesnのすなわち場合data.codes.lengthは0のみで、forループは決して開始しません)

+0

@ SK11ではなく、 'data.rowItem.code'、' rowItem.code'(どのようにデータにオブジェクトrowItemを持たせることができるか) – noob