2011-08-01 9 views
7

すべてSOAP応答プロパティにどのようにアクセスできますか?今私は、アラートの私のSOAPリクエストを取得することができています

フォーム最後の数日間は、私はJSを使用して石鹸にアクセスする方法を探しています、そして、すべての後、私は、このリンクSimplest SOAP example

から解決策を得ました。 しかし、私は、これは私のコード

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などのようなこの応答プロパティを表示したいと思います... どうすればいいですか?アドバンス

答えて

5

おかげで、このよう

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のは、1.5以降でXMLに文字列を解析するparseXMLユーティリティを追加して、あなたの例ではそれに応じて

をあなたのノードにアクセスresponseがサーバーの応答であるように、次のように使用できます。

var xmlDoc = $.parseXML(response), 
     $xml = $(xmlDoc), 
     $value= $xml.find("errorShortDesc"); 
     //do what you want with the value 
    console.log($value.text()); 
関連する問題