2013-09-23 16 views
0

響應XMLjQuery的:設置XML節點到DOM元素

<Response> 
<ClientDetail> 
    <FirstName>a</<FirstName> 
    <LastName>a</LastName> 
    <Status>Off</Status> 
    <City>a</City> 
    <ZipCode>12346</ZipCode> 
    ............ 
</ClientDetail> 
<ClientDetail> 
    <FirstName>b</<FirstName> 
    <LastName>b</LastName> 
    <Status>Off</Status> 
    <City>b</City> 
    <ZipCode>321546</ZipCode> 
    ........ 
</ClientDetail> 
</Response> 

解析響應

$($.parseXML(response)).find("ClientDetail").each(function(){ 
      var respRow='<tr>'+ 
       '<td class="ClientName">'+$(this).find('LastName').text()+', '+ $(this).find('FirstName').text()+ 
      '</td><td class="ClientStatus">'+$(this).find('Status').text()+ 
      '</td><td class="DateOfBirth">'+$(this).find('BirthDate').text()+ 
      '</td><td class="searchData" style="display:none;">'+this+'</td>'; 
      $('#clientSearchResult > tbody:last').append(respRow); 
     }); 

的XML設置爲隱藏<td>

<td class="searchData" style="display:none;">'+this+'</td>' 

回讀

var searchData = $(row).find('.searchData').data(); 
    alert($(searchData).find('Status').text()); 

如果沒有,那麼這樣做的正確的方式應該怎麼辦呢?

+1

你實際上是試圖輸出內部的一個XML節點元素,這將無法正常工作,並且您肯定無法使用data()返回節點? – adeneo

+0

那我該如何解決這個問題? –

回答

0

我不認爲這是在頁面中存儲xml字符串的最佳方式。然而,爲了使你的代碼工作,你需要變換一個「簡單」的字符串的XML字符串,例如改變每一個「<」性格與轉義序列「<」:

$('#clientSearchResult > tbody:last').append(respRow.replace(/</g,'&lt;')); 

當你閱讀過的字符串返回,您可以更改轉義序列「<」回字「<」:

var searchData = $('#clientSearchResult > tbody:last').text().trim().replace(/&lt;/g,'<'); 

這是一個工作示例:http://jsfiddle.net/RX6Mm/