Как получить доступ к свойству ответа SOAP?

Все

В последние несколько дней я нахожу, как получить доступ к мылу с помощью JS, и в конце концов я получил решение по этой ссылке. Простейший пример SOAP

Теперь я могу получить мой запрос на мыло в тревоге. но я хочу использовать его свойство и хочу напечатать ответ (я имею в виду анализ ответа и отображение)

это мой код

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);

и я получил ответ в боевой готовности, как это

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

И я хочу, чтобы отобразить это свойство ответа как errorShortDesc, errorLongDesc и т. Д... Как я могу?

Заранее спасибо

2 ответа

Решение

Попробуйте использовать этот способ

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;
}

jQuery добавлено начиная с 1.5 parseXMLутилита для анализа строки в XML, а затем получить доступ к вашим узлам соответственно

В вашем примере вы можете использовать его следующим образом, так что response ответ сервера:

  var xmlDoc = $.parseXML( response ),
      $xml = $( xmlDoc ),
      $value= $xml.find( "errorShortDesc" );
      //do what you want with the value
  console.log($value.text());
Другие вопросы по тегам