2014-05-08 30 views
0

這不起作用。我創建了一個Web服務中調用後,我得到的輸出: "<"string>user-hp/user</string">""獲取xml對html的響應

所以我想在html page輸出作爲"user-hp/user"和我已經使用這個代碼,但它顯示只是一個空白頁。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
<script language="javascript" type="text/javascript"> 

     var Soap_a = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><HelloWorld xmlns=\"http://tempuri.org/\"></Helloworld></soap:Body></soap:Envelope>"; 
     var xhr = new XMLHttpRequest(); 
     xhr.open("GET", "user.asmx", false); 
     xhr.setRequestHeader("Content-Type", "text/xml;charset=utf-8"); 
     xhr.setRequestHeader("Content-Length", Soap_a.length.toString()); 
     xhr.setRequestHeader("SOAPAction", "\"http://tempuri.org/HelloWorld\""); 
     xhr.send(Soap_a); 
     var xmlDoc = xhr.responseXML; 
     var resultNodee = xmlDoc.getElementsByTagName("string"); 
     var result = resultNodee[0].childNodes[0].data; 
     document.getElementById("string").innerHTML = result; 

</script> 
</head> 
<body> 
<div id="string"></div> 
</body> 
</html> 
+0

開發控制檯顯示什麼?請求看起來如何? – rene

+0

這是一個html頁面,它在瀏覽器中運行後顯示空白頁面 – Deepanshu

+0

是的,您已經告訴過,並且這還不足以診斷 – rene

回答

0

這裏的原因是腳本在構建完整個HTML DOM之前執行。由於JavaScript引擎無法找到<div id="string">

如果你確信你的腳本應該只是</body>結束前運行完全正常,則<script>標籤移動到結束,是這樣的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
</head> 
<body> 
    <div id="string"></div> 
    <script language="javascript" type="text/javascript"> 

     var Soap_a = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><HelloWorld xmlns=\"http://tempuri.org/\"></Helloworld></soap:Body></soap:Envelope>"; 
     var xhr = new XMLHttpRequest(); 
     xhr.open("GET", "user.asmx", false); 
     xhr.setRequestHeader("Content-Type", "text/xml;charset=utf-8"); 
     xhr.setRequestHeader("Content-Length", Soap_a.length.toString()); 
     xhr.setRequestHeader("SOAPAction", "\"http://tempuri.org/HelloWorld\""); 
     xhr.send(Soap_a); 
     var xmlDoc = xhr.responseXML; 
     var resultNodee = xmlDoc.getElementsByTagName("string"); 
     var result = resultNodee[0].childNodes[0].data; 
     document.getElementById("string").innerHTML = result; 

</script> 
</body> 
</html> 

這將確保所有div等標籤是在腳本執行之前創建的。

請使用此作爲起點,而不是複製粘貼解決方案。

+0

它仍然不工作,並顯示空白頁面,但當我嘗試使用「POST」和「var resultNodee = xmlDoc.getElementsByTagName( 「*」);」那麼它顯示輸出:undefined – Deepanshu

+0

IMO你不需要POST。 GET應該沒問題。使用瀏覽器腳本調試器調試您的腳本 –