創建

2014-05-24 54 views
0

我使用jQuery的AJAX從jQuery的XML響應關聯鍵排列和我得到的XML回來像創建

<tabs> 
<tab> 
<id>1</id> 
<name>firstname</name> 
<lastname>surname1</lastname> 
</tab> 

<tab> 
<id>2</id> 
<name>secondname</name> 
<lastname>surname2</lastname> 
</tab> 
</tabs> 

jQuery中我想將其存儲在對象類似下面

var obj = { 
    '1' : { 
     'name' : 'firstname', 
     'lastname' : 'surname1' 
    }, 
    '2' : { 
     'name' : 'secondname', 
     'lastname' : 'surname2' 
    } 
}; 

這樣基於密鑰我可以直接訪問它的值。

obj.2.name should return me second name 

任何jQuery的專家,請幫助我。

下面是我的Jquery代碼,我試圖更新但沒有得到任何線索如何使其工作。

預先感謝您。

$.ajax({ 
      url: __BASEURL + "portal/getusertabs.php", 
      data: {user_id: user_id}, 
      type: "POST", 
      dataType: 'XML', 
      cache: false, 
      async: false, 
      success: function(data, textStatus, jqXHR) { 
       $(data).find('tabs').each(function() { 
        $(this).find('tab').each(function() { 
         var tab_id = $(this).find('id').text(); 
         var tab_name = $(this).find('name').text(); 
         var tab_lastname = $(this).find('last name').text(); 
         tab.push({id : tab_id, name : tab_name, lastname : tab_lastname}); 
        }); 
       }); 
      } 
     }); 
+0

http://jsfiddle.net/xnPF3/ – adeneo

+0

做一些像反序列化xml到對象。也看看** [這](http://stackoverflow.com/questions/10114591/deserialize-xml-to-object-with-symfony2)** – super

回答

1

請注意,您不需要遍歷tabs,因爲這是根元素,應該只有他們的1。您還需要將該選項卡的id設置爲對象的關鍵字。試試這個:

$(data).find('tab').each(function() { 
    var tab_id = $(this).find('id').text(); 
    var tab_name = $(this).find('name').text(); 
    var tab_lastname = $(this).find('lastname').text(); 
    tab[tab_id] = { 
     name: tab_name, 
     lastname: tab_lastname 
    }; 
}); 

console.log(tab); 

Example fiddle

注意,使用tab.2.name是無效的JavaScript作爲數值不能用作標識符。相反,你需要使用這個:

tab['2'].name // = 'secondname' 
+0

嗨羅伊..非常感謝你的幫助。是否有可能準備循環中標籤對象的所有項目? – SmartDev

+0

這就是這樣做。它會從所有'tab'元素中獲取值並將其放入對象中。 –

+0

對不起羅裏..我的意思是有可能循環選項卡{}在其他地方顯示其內容... – SmartDev