2012-03-26 61 views
2

我有一個JSON如下

{"DataList": 
    {"Data":[ 
    {"@attributes":{"description":"FGFGFGH","code":"FGFGFGH"}}, 
    {"@attributes":{"description":"UIS default relying party","code":"UIS"}}, 
    {"@attributes":{"description":"MDEx Healthcare Portal","code":"MDE"}}, 
    {"@attributes":{"description":"VBK","code":"VBK"}}, 
    {"@attributes":{"description":"Omnicare","code":"OC"}}, 
    {"@attributes":{"description":"MDEX","code":"MDEX"}}, 
    {"@attributes":{"description":"Bank of America","code":"BOA"}}, 
    {"@attributes":{"description":"LDAP","code":"LDAP"}}, 
    {"@attributes":{"description":"JetBlue","code":"JB"}}, 
    {"@attributes":{"description":"Digital Signature Demo Application","code":"DEMODS"}} 
     ] 
    } 
} 

,我下面的jQuery代碼來創建選擇框的選項

$.each(response, function(i, DataList) { 
       $.each(DataList,function(j,Data){ 
        var finalObj = [email protected]; 
        options += '<option value="' + finalObj.code + '">' + finalObj.description + '</option>'; 
       }); 
       $("#relyingpartyall").html(options); 
      }); 

上面的代碼工作正常在Firefox 3.6中,但在Firefox 10,11,鉻,Safari瀏覽器,即它不工作它給出以下錯誤。

Firefox 11 : can't convert AttributeName to string ,var finalObj = [email protected]; 

     Chrome : Unexpected Identifier @ line "options += '<option value="' + finalObj.code + '">' + finalObj.description + '</option>';" 

有人可以幫我解決這個問題嗎?

回答

5

嘗試這樣的:

var finalObj = Data["@attributes"]; 

或直接訪問數據陣列中的單個$.each

var relyingpartyall = $('#relyingpartyall'); 
relyingpartyall.empty(); 
$.each(response.DataList.Data, function(i, item) { 
    var attributes = item["@attributes"]; 
    relyingpartyall.append(
     $('<option/>', { 
      value: attributes.code, 
      html: attributes.description 
     }) 
    ); 
}); 
​ 
+0

我越來越像下面 1型兩種不同的反應: '{ 「的DataList」 :{「Data」:{「@ attributes」:{「description」:「FGFGFGH」,「code」:「FGFGFGH」}}}}' Type 2: '{「DataList」:{「Data」 [「@attributes」:{「描述ption「:」FGFGFGH「,」code「:」FGFGFGH「}}, {」@attributes「:{」description「:」UIS default relying party「,」code「:」UIS「}}]}}' 對於第二種類型的代碼工作正常,但對於第一個響應它不會工作。 :( – 2012-03-26 11:47:45

+0

@TechieSathish,是的,它不起作用,因爲在第一個例子中'Data'不是一個數組,這是一種使用屬性表示多個項目的糟糕方式,在這種情況下,你應該保留原始循環或者如果你有控制JSON的生成修復它,以便您始終將Data作爲數組。 – 2012-03-26 11:48:42

+0

感謝您的快速回復。我使用json_encode php函數生成的響應。 – 2012-03-26 12:00:45