2014-05-08 4 views
0

Это не работает. Я создал веб-сервис, в котором после вызова я получаю выход: "<"string>user-hp/user</string">""Получение ответа xml на html

Так что я хочу, чтобы получить результат, как "user-hp/user" на html page и я использовал этот код, но он не показывает ничего, кроме пустой страницы.

<!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

Что показывает консоль dev? Как выглядит запрос? – rene

+0

это html-страница, и после запуска ее в браузере она показывает пустую страницу – Deepanshu

+0

Да, вы уже сказали это, и этого недостаточно, чтобы диагностировать – rene

ответ

0

Причина в том, что сценарий выполняется до того, как будет построен весь HTML DOM. Из-за чего механизм JavaScript не может найти <div id="string">.

Если вы уверены, что ваш сценарий должен работать прекрасно затем переместить <script> тег в конце концов, незадолго до закрытия </body>, что-то вроде:

<!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 должно быть хорошо. Отладка вашего сценария с помощью отладчика сценария браузера –

Смежные вопросы