場景:我希望通過AJAX將元素列表返回給瀏覽器。使用JAXB進行編組,並且由於XML需要一個根元素(JSON不會......),我將這個列表包裹在一個信封(包裝器)元素中。現在在客戶端(瀏覽器),我希望刪除外部元素,留下完整的元素列表。然後我希望將提取的元素列表放入HTML Dom中。我怎樣才能做到這一點?如何刪除AJAX XML Response的外部元素
例澄清:
希望發送:
<tr><td>data</td></tr><tr><td>data</td></tr>
由於對文本/ XML響應類型限制(爲了符合XML),我包裹此爲:
<tbody><tr><td>data</td></tr><tr><td>data</td></tr></tbody>
所以在我的jquery回調方法中,我收到上述(作爲xml對象)。我怎樣才能(除了無論什麼作品都沒有特別的順序)移除tbody元素,並確保剩下的tr標籤是可接受的domData。我玩find(),filter()等,但仍然沒有解決這兩個要求。
謝謝大家誰已經回覆!這一個真的讓我感到困擾。在沒有測試所有提供的答案的情況下,似乎有多種方法可以做到這一點,並且可能將每個答案都標記爲正確答案。我實際上是這樣的:
}).done(function(xmlResponse) {
$strData = xmlToString(xmlResponse);
$html = $($strData);
$('#mytable tbody').html($html.contents());
});
出於某種原因,沒有明確的標註將xml首先轉換爲字符串,它不起作用。此後,在$()中包裝字符串將其強制爲符合DOM,然後content()方法負責提取(移除)外部元素。
這裏是xmlToString()方法。如果任何人都可以指出我如何消除這種醜陋的方法的需要,那肯定是一種獎勵。它看上去就像一個預2009年的HTML應用程序:
function xmlToString(xmlData) {
var xmlString;
if (window.ActiveXObject){
xmlString = xmlData.xml;
} else{
xmlString = (new XMLSerializer()).serializeToString(xmlData);
}
return xmlString;
}
我將迎來第一個答案我閱讀的基礎是正確的,這是足以讓我過了終點線。
穆罕默德 - 感謝您的有益建議。當我在jsFiddle中嘗試它時,你的示例沒有運行:如果我註釋掉上面給出的那一行,那麼它運行正常。有任何想法嗎? – arcseldon