2015-12-24 44 views
0

我不知道我到底發生了什麼。我正在嘗試撥打肥皂服務,但我沒有得到任何迴應。Jquery ajax SOAP沒有迴應

function soap_call(){  
    var wsUrl = "https://ws.cert.transactionexpress.com/portal/merchantframework/MerchantWebServices-v1?wsdl"; 
    var soapRequest = 
     '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://postilion/realtime/merchantframework/xsd/v1/"> \ 
      <SOAP-ENV:Body> \ 
      <v1:UpdtRecurrProfRequest> \ 
       <v1:merc> \ 
        <v1:id>7777778598</v1:id> \ 
        <v1:regKey>BLHP7DK5W385J6WZ</v1:regKey> \ 
        <v1:inType>1</v1:inType> \ 
        <v1:prodType>5</v1:prodType> \ 
       </v1:merc> \ 
       <v1:cust> \ 
        <v1:type>0</v1:type> \ 
        <v1:contact> \ 
         <v1:fullName>Test Person</v1:fullName> \ 
         <v1:addrLn1>123 Main</v1:addrLn1> \ 
         <v1:addrLn2>Second Floor</v1:addrLn2> \ 
         <v1:city>Gilbert</v1:city> \ 
         <v1:state>AZ</v1:state> \ 
         <v1:zipCode>85296</v1:zipCode> \ 
         <v1:type>1</v1:type> \ 
         <v1:stat>1</v1:stat> \ 
        </v1:contact> \ 
        <v1:pmt> \ 
         <v1:type>0</v1:type> \ 
         <v1:card> \ 
          <v1:pan>4485896261017708</v1:pan> \ 
          <v1:sec>999</v1:sec> \ 
          <v1:xprDt>1602</v1:xprDt> \ 
         </v1:card> \ 
         <v1:ordNr>Cust Ref ID Can be used for extra info</v1:ordNr> \ 
         <v1:desc>Can be used to name wallet again</v1:desc> \ 
         <v1:indCode>2</v1:indCode> \ 
        </v1:pmt> \ 
       </v1:cust> \ 
       </v1:UpdtRecurrProfRequest> \ 
      </SOAP-ENV:Body> \ 
     </SOAP-ENV:Envelope>' ; 
     jQuery.ajax({ 
      type: "POST", 
      url: wsUrl, 
      contentType: "text/xml; charset=\"utf-8\"", 
      dataType: "xml", 
      data: soapRequest, 
      //processData: false, 
      //async:true, 
      headers: { 
       SOAPAction: "UpdtRecurrProf" 
      }, 
      complete: function (xmlHttpRequest) { 
       alert(xmlHttpRequest.responseXML); 
      }, 

     }); 

    } 

我試着打電話使用this link,然後它給了我正確的迴應。

我沒有肥皂專業知識。如果有人能從這裏幫助我,我將不勝感激。

回答

0

剛剛通過Postman檢查了您的請求 - 對於請求本身而言,一切都絕對正常。下面是我的反應:出現

<?xml version='1.0' encoding='UTF-8'?> 
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:UpdtRecurrProfResponse xmlns="http://postilion/realtime/portal/soa/xsd/Faults/2009/01" xmlns:ns2="http://postilion/realtime/merchantframework/xsd/v1/"> 
      <ns2:custId>1450956517822188336</ns2:custId> 
      <ns2:pmtId>1450956517853193808</ns2:pmtId> 
      <ns2:rspCode>00</ns2:rspCode> 
     </ns2:UpdtRecurrProfResponse> 
    </S:Body> 
</S:Envelope> 

的問題,因爲你使用JavaScript和same origin policy不允許請求域,這是從你的不同 - 這有助於從XSS攻擊保護。

這可能是可能的,雖然請求遠程主機上,如果它提供了一個CORS頭,像Access-Control-Allow-Origin: *,它允許所有的域,以請求它,但在看響應時,它不返回此標頭再此情況下:

Cache-Control → private 
Content-Encoding → gzip 
Content-Type → text/xml;charset=utf-8 
Date → Thu, 24 Dec 2015 11:28:37 GMT 
Server → WebServer 
Transfer-Encoding → chunked 

此外,您應該在您的瀏覽器控制檯中看到此錯誤消息,該消息批准了我的建議。

迴應預檢要求未通過訪問控制檢查:沒有 「訪問控制允許來源」標頭出現在請求 資源

所以,問題不在於SOAP請求自己,但與您嘗試通過JavaScript請求它。通過後端(例如PHP)發出請求 - 並且它應該順利進行。

+0

感謝您的回覆。對於PCI編譯,我需要從JavaScript調用它。從服務器端開始工作。但我需要用javascript來做。 – Amit