2012-11-21 17 views
1

我是XMLHttpRequest的新手,但已成功更新服務器的時鐘,並使用它與GETresponseXML剪輯XML數據發送

現在我需要發送POST並收到XML。服務器上的我的PHP正在接收帖子,甚至以XML格式發回數據,但是如果XML元素包含類似html的代碼,則會出現一個奇怪的問題:responseXML將從HTML代碼剪輯的元素文本傳遞到最後。

下面是相關代碼:

PHP發送XML:

根據螢火蟲
header('Content-type: text/xml'); 
echo '<?xml version="1.0" encoding="UTF-8" ?>'; 
echo "<posts>"; 
echo "<textblock>Block with html<br />Next line in block</textblock>"; 
echo "<inputline>input line</inputline>"; 
echo "</posts>"; 

完整的XML響應(注意所有的數據都存在)

<?xml version="1.0" encoding="UTF-8" ?><posts><textblock>Block with html<br /> 
Next line in block</textblock><inputline>input line</inputline></posts> 

早在瀏覽器JS變量收到得到「與HTML塊」,沒有別的。 HttpPostExch是XMLHttpRequest的

var received = 
HttpPostExch.responseXML.getElementsByTagName("textblock")[0].firstChild.data; 

接着元件,inputline,可沒有任何問題。以上是用FF16,IE8也一樣。所以我應該做錯了,包括HTML代碼在XML

任何想法爲什麼代碼在html存在時會這樣做?

回答

0

您正在訪問的textblock節點,這與文本"Block with html"文本節點的第一個孩子。這裏的行爲是完全可以預料的。如果你想整個textblock節點,使用:

HttpPostExch.responseXML.getElementsByTagName("textblock")[0].data; 
+0

很抱歉,沒有,HttpPostExch.responseXML.getElementsByTagName( 「正文塊」)[0]。數據不限定用於_received_變量的任何值(I檢查了它)。不管怎樣,謝謝你。 – RickTrelles

+0

@RickTrelles嘗試此:'接收VAR =(新的XMLSerializer())serializeToString(HttpPostExch.responseXML.getElementsByTagName( 「正文塊」)[0])' –

0

XML不會在元素的文本接受尖括號,因此不能發送HTML文本。我認爲這是一個不必要的限制。我很容易區分元素的末尾與HTML標籤。