2011-07-08 76 views
0
request.open("GET", selectedTab + ".html", true); 

這會迴應我整個html頁面還是隻是在一些特定標籤中的文本部分。如果我的html頁面有圖像和段落,我的請求對象中究竟會發生什麼,以及如何使用單個標籤(使用javacript),如果它將所有標籤全部返回?異步請求

例如,說我的html文件是

<!DOCTYPE html PUBLIC 「-//W3C//DTD XHTML 1.0 Strict//EN」 
「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」> 
<html xmlns=」http://www.w3.org/1999/xhtml」 lang=」en」 xml:lang=」en」> 
<head>  
<link type="text/css" href="something" rel="stylesheet"> 
</head> 
<body> 
<p>hello</p> 
<img src="something.jpg" /> 
</body> 
</html> 

現在我該怎樣得到文件的各個coponents。

回答

1

您將得到該文件的HTML代碼。你必須自己解析元素以拉取任何外部文件(例如,css,js等)

編輯以迴應編輯(x2): 您的ajax請求將獲得HTML,但如果您想獲得樣式表或圖片,您將不得不將其解析出來。例如(關閉我的頭頂,沒有完全測試:)):

var iframe = document.createElement("iframe"); //creating dummy iframe to load html into in order to parse it. DOMParser is another option; 
iframe.innerHTML = response; //assuming response is the variable you stored the responseText from the AJAX request 
var doc = iframe.contentDocument //get the document property of the iframe 
var url = doc.getElementsByTagName("link")[0].href; //gets url of stylesheet 
var img = doc.getElementsByTagName("img")[0].src; //gets url of img 

然後,您可以提出更多請求來獲取實際項目。

如果您只想獲得各種元素,那麼您可以使用doc.getElementsByTagName("p")技術來獲取標籤。或者還有其他的DOM方法可能會更好地依賴於HTML和上下文。

+0

請親切回覆編輯!謝謝。 – Kraken

+0

仍然沒有得到它,通常如果我請求一個名爲請求的對象,並將其發送到PHP文件,然後我想要一些來自PHP的文本響應,我在那裏回顯它,並通過請求獲取當前文件中的文本.responseText,現在在你的回覆中,什麼是iframe?並且是您的迴應相當於我的請求對象? 和contentDocument有什麼作用? – Kraken

+0

增加了更多意見,試圖澄清 –

0

我建議使用http://jquery.com/庫來幫助解析返回的數據。例如:

<script type="text/javascript"> 

$(function() { // just a document.ready wrapper 
    $.get(selectedTab + ".html", function(data) { 
     var parsedData = $(data); 
     var specificValue = $("#someID", parsedData); // any CSS selector will work in place of #someID 
    }); 
}); 

</script> 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>