jquery ajax SOAP服务无法获得响应

时间:2014-03-04 18:03:53

标签: jquery ajax web-services soap

我希望有人可以对此有所了解。我刚开始使用SOAP服务,并且很难理解为什么我在ajax调用中无法获得响应。

请求和响应在SOAPui中完美运行,而不是在浏览器中的ajax中。我也不确定如何检查响应是否有效。

此外,值得指出的是,如果我改变

contentType:“application / soap + xml; charset = utf-8”, 至 contentType:“text / xml”,

它总是会出错。

SOAP RESPONSE

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
   <soapenv:Body>
      <vcr:ValidResponse xmlns:vcr="http://url/central-register">
         <vcr:valid>true</vcr:valid>
      </vcr:ValidResponse>
   </soapenv:Body>
</soapenv:Envelope>

AJAX

<script type="text/javascript">
                       var soapMessage = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:cen="http://url/central-register">'+
                       '<soap:Header/>'+
                       '<soap:Body>'+
                       '<cen:ValidRequest>'+
                       '<cen:personIdentity>'+
                       '<cen:Id>32342</cen:Id>'+
                       '<cen:surname>SMITH</cen:surname>'+
                       '<cen:dateOfBirth>1943-02-14</cen:dateOfBirth>'+
                       '</cen:personIdentity>'+
                       '<cen:Credentials>'+
                       '<cen:Username>CGWSV02</cen:Username>'+
                       '<cen:Password>February2014</cen:Password>'+
                       '</cen:Credentials>'+
                       '</cen:ValidRequest>'+
                       '</soap:Body>'+
                       '</soap:Envelope>';

                       function CallService()
                       {

                       $.ajax({
                              url: "https://www.url-to-soap-service/",
                              type: "POST",
                              dataType: "xml",
                              contentType: "application/soap+xml; charset=utf-8",
                              data: soapMessage,
                              success: OnSuccess,
                              error: OnError
                        });
                       return false;
                       }

                   function OnSuccess(data, status)
                   {
                       alert(data);
                   }

                   function OnError(request, status, error)
                   {
                       alert('error');
                   }

                   $(document).ready(function() {
                      jQuery.support.cors = true;
                    });
                </script>

              <form method="post" action="">
                  <input type="submit" value="SUBMIT" onclick="CallService(); return false;" />
              </form>

1 个答案:

答案 0 :(得分:0)

您应该在soap服务中启用ajax 在肥皂中取消注释[System.Web.Script.Services.ScriptService]