2015-07-13 39 views
0

我的網站上有一個ajax菜單。 此菜單發送GET請求以檢索點擊鏈接的頁面內容。 我從請求中獲取的內容是一個完整的HTML頁面,其中包含頁面上的所有元素,包括腳本和樣式標記。 我在XHR響應中使用jQuery.filter來獲取腳本作爲HTML腳本標記。 但是,當我嘗試獲取樣式錶鏈接標記它不起作用。 它只給我的樣式鏈接標籤,如果我使用jQuery.findon的XHR。 這是阿賈克斯我用在Ajax上使用jQuery.filter和jQuery.find時出現的不同結果xhr回覆

$.ajax({ 
    type: 'GET', 
    url: url, 
    dataType: "html", 
    async: false, 
    error: function(oXHR, type, exception) { 
     console.dir(exception); 
    }, 
    success: function(xhr) { 
     var scripts = $(xhr).filter('.vod'), 
      styles = $(xhr).find('link[name="vod"]'); 
     $(styles).each(function() { 
      if (this && this.href) { 
       loadStyle(this); 
      } 
     }); 
     $(scripts).each(function() { 
      if (this.text) { 
       $.globalEval(this.text || this.textContent || this.innerHTML || ''); 
      } else if (this.src || this.href) { 
       loadScript(this); 
      } 
     }); 
     $('#container').html($(xhr).find('#content')[0]); 
    } 
}); 
+1

@ZakariaAcharki您發佈的鏈接是錯誤的和最差的HTLML標記無效 –

回答

1

的Jquery從響應除去HTML,頭部和身體標記。這是因爲當您設置adiv元素的innerHTML時,JavaScript如何工作。所以你沒有完整的html頁面,你有body和head標籤的子節點。

所以你需要使用過濾器,因爲鏈接元素不是一個子元素。

什麼你期待:[htmlNodeReference]

你得到什麼[title, link, h1, div, etc]

+0

在響應中XHR是完全的HTML頁面,包括刺DOCTYPE – RuvenGam

+0

它不應該是完整的HTML頁面...'console.log(xhr);'你應該使用過濾器來獲取鏈接標籤。 – epascarello

+0

過濾器只獲取腳本標記,這是我在問題中問的原因,爲什麼?並找到給我的CSS鏈接標記 – RuvenGam

相關問題