2012-05-07 59 views
0

我解析了一些從AJAX請求返回的XML,但我有一個特殊情況,我必須在解析之前檢查一下。有時服務器會返回一些HTML,如果是這種情況,我需要在頁面上執行重新加載。問題是,當我嘗試對head元素中的META標記進行簡單檢查時,我一直沒有收到任何回報。jQuery不解析AJAX請求返回的HTML

下面是返回的html示例。

<html> 
    <head> 
    <title>Redirection</title> 
    <META HTTP-EQUIV="REFRESH" URL="https://testurl/desktop"/> 
    <META HTTP-EQUIV=Pragma CONTENT=no-cache> 
    </head> 
</html/> 

以下是我用來嘗試和調試的jQuery代碼片段。 xml var是$ .ajax()調用的成功方法返回的內容。

parseXml(xml) { 
    $(xml).parent().find('META').each(function() { 
     location.reload(); 
    }); 
} 

.find()方法永遠不會找到META標記並退出並導致我的代碼中斷。任何建議將非常感激。

這裏是Ajax調用與 $阿賈克斯({ 類型: 'POST', 網址: '行動= someAction &目標= someTarget?', 成功:函數(響應){ 嘗試{VAR orders = parseXml(response); } });

下面是示例XML,我通常找回

<?xml version="1.0" encoding="ISO-8859-1"?> 
<ORDERS> 
    <ORDER STATUS="OPEN" ID="62452254" DATE="May 5" /> 
    <ORDER STATUS="FILLED" ID="341411" DATE="May 8" /> 
</ORDERS> 
+0

需要查看您的完整ajax選項。 –

+0

這也取決於你的XML是如何構建的。你也可以顯示xml – defau1t

+0

我編輯了初始文章,包括ajax選項和樣本xml – Justin

回答

0

我不認爲你需要.parent(),你可能需要拔出函數內部的URL屬性。

編輯: 抓住更多的空間,從評論的實驗:

alert(xml); 
var h = $(xml).html(); 
alert(h); 

前者警報顯示的內容,後者警報顯示nullJquery selector for <link> elements in <head>似乎已經接受的答案優雅的答案:

從[jQuery的]文檔http://api.jquery.com/jQuery/#jQuery2

當通過在複雜的HTML,某些瀏覽器可能不會產生一個DOM 恰好複製提供的HTML源代碼。如上所述,我們使用 瀏覽器的.innerHTML屬性來解析傳遞的HTML並將 插入到當前文檔中。在此過程中,某些瀏覽器會過濾出某些元素,例如,或 元素。因此,插入的元素可能不是傳遞原始字符串的代表 。

+0

我刪除了父母,它仍然無法正常工作。該URL沒有意義,但即使我嘗試將其作爲屬性讀取也是未定義的。 – Justin

+0

哇,這很奇怪。我將html節點重命名爲httml,它的作用就像一個魅力。但是當它被命名爲html時,那麼.find()不會得到它。這是一些優雅的巫術巫術。 – robrich

+0

那麼你認爲jQuery不能解析這些數據或者使用任何選擇器嗎?任何可能的解決方法? – Justin