使用AJAX jQuery调用WCF(3.5)

时间:2014-03-19 10:23:10

标签: jquery ajax wcf

我无法通过另一台服务器进行ajax调用。它在本地工作,如果我使用c#代码或使用像soapui这样的程序,它可以工作,所以我想我的浏览器是"阻塞"电话。下面的wsdata包含一个肥皂信封。错误消息是" 400错误请求"。有什么想法吗?

我无法使用下面的web.config设置,因为它不受支持。

<system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true"/>
      </webHttpBinding>
    </bindings>
  </system.serviceModel>


function invokeService() {
    $(document).ready(function() {                      
      $.ajax({
          type: "GET",
          //async: "false",
          url: "service.svc",
          data: wsdata,
          contentType: "application/soap+xml; charset=utf-8",
          dataType: "xml",
          //processData: true,
          success: function(result) {
              AjaxSucceeded(result);
          },
          error: AjaxFailed
      });
  });
}
function AjaxSucceeded(result) {
    alert(result);
}
function AjaxFailed(result) {
    alert(result.status + ' ' + result.statusText);
}

更新。这适用于本地但不适用于其他服务器。

我收到消息&#34; 200 ok&#34;但是如果你粘贴&#34; servicev.svc&#34;那么响应包含的内容就像显示的那样。在您的浏览器中。

function invokeService() {
    $(document).ready(function() {                      
      $.ajax({
          type: "POST",
          //async: "false",
          url: "service.svc",
          data: wsdata,
          contentType: "application/soap+xml; charset=utf-8",
          //dataType: "jsonp",
          //processData: true,
          success: function(result) {
              AjaxSucceeded(result);
          },
          error: AjaxFailed
      });
  });
}
function AjaxSucceeded(result) {
    alert(result);
    result();
}

function AjaxFailed(result) {
    alert(result.status + ' ' + result.statusText);
}

1 个答案:

答案 0 :(得分:0)

将dataType设置为jsonp,因为您正在设置webHttpBindingWithJsonP并确保从服务传递json响应

  dataType: 'jsonp'