2011-08-01 14 views
7

Toda Forma¿Cómo obtengo acceso a la propiedad de respuesta SOAP?

últimos días estoy encontrando la forma de acceder jabón usando JS, y después de todo lo que tengo la solución desde este enlace Simplest SOAP example

Ahora soy capaz de conseguir mi solicitud de jabón en alerta. pero quiero usar su propiedad y desea imprimir la respuesta (me refiero a analizar la respuesta y la pantalla)

este es mi código

var xmlhttp = new XMLHttpRequest(); 
        xmlhttp.open("POST", "http://service.project-development-site.de/soap.php",true); 
        xmlhttp.onreadystatechange=function() { 
        if (xmlhttp.readyState == 4) { 

        alert(xmlhttp.responseText); 

         // http://www.terracoder.com convert XML to JSON 
         var json = XMLObjectifier.xmlToJSON(xmlhttp.responseXML); 
         var result = json.Body[0].GetQuoteResponse[0].GetQuoteResult[0].Text; 
         // Result text is escaped XML string, convert string to XML object then convert to JSON object 
         json = XMLObjectifier.xmlToJSON(XMLObjectifier.textToXML(result)); 
         alert(symbol + ' Stock Quote: $' + json.Stock[0].Last[0].Text); 
        } 
        } 
        xmlhttp.setRequestHeader("SOAPAction", "http://service.project-development-site.de/soap.php"); 
        xmlhttp.setRequestHeader("Content-Type", "text/xml"); 
        var xml = '<?xml version="1.0" encoding="utf-8"?>' + 
        '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">' + 
         '<soapenv:Header/>'+ 
          '<soapenv:Body>'+ 
           '<tem:loginUserSoapInPart>'+ 
           '<tem:userName>user</tem:userName>'+ 
           '<tem:passWord>pwd</tem:passWord>'+ 
           '<tem:accesToken>acktoken</tem:accesToken>'+ 
           '</tem:loginUserSoapInPart>'+ 
          '</soapenv:Body>'+ 
         '</soapenv:Envelope>'; 
        xmlhttp.send(xml); 

y me dieron la respuesta de alerta como esta

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"> 
    <SOAP-ENV:Body> 
     <ns1:loginUserSoapOutPart> 
     <ns1:error> 
      <ns1:errorCode>0</ns1:errorCode> 
      <ns1:errorShortDesc>OK</ns1:errorShortDesc> 
      <ns1:errorLongDesc>SOAP request executed successfully .</ns1:errorLongDesc> 
     </ns1:error> 
     <ns1:soapOut> 
      <ns1:accesToken>accesToken</ns1:accesToken> 
      <ns1:ACK>ACK</ns1:ACK> 
     </ns1:soapOut> 
     </ns1:loginUserSoapOutPart> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

Y quiero mostrar esta propiedad de respuesta como errorShortDesc, errorLongDesc, etc ... ¿Cómo puedo?

Gracias de antemano

Respuesta

5

trate de usar esta forma

var xmlResponse =xmlhttp.responseXML.documentElement; 

var fullNodeList = xmlResponse.getElementsByTagName("loginUserSoapOutPart"); 

for (var i=0; i < fullNodeList.length; i++) 
{ 
    var eachnode = new Option(); 
    eachnode.text = fullNodeList[i].childNodes[0].nodeValue; 
    eachnode.value = fullNodeList[i].attributes[0].value; 
} 
1

jQuery añadió desde 1.5 una utilidad parseXML a analizar una cadena a XML, y luego acceder a los nodos consecuentemente

En su ejemplo, Puede usarlo de la siguiente manera para que response sea la respuesta del servidor:

var xmlDoc = $.parseXML(response), 
     $xml = $(xmlDoc), 
     $value= $xml.find("errorShortDesc"); 
     //do what you want with the value 
    console.log($value.text()); 
Cuestiones relacionadas