2013-09-23 3 views
0

Response XMLJQuery: Set Xml Node в 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 внутри элемент, который не будет работать, и вы, конечно, не сможете вернуть узел с данными()? – 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/

Смежные вопросы