跨域jQuery Ajax请求和WCF REST服务

我正在调用(Ajax请求)一个WCF REST服务,该请求是一个跨域请求。

如果我在同一个域中部署我的服务,一切都像奶油一样。 最终在生产中,该服务将位于不同的域中。

我正在使用jQuery 1.5.2。 我的服务给我一个错误说:

errorThrown: "jQuery15208493315000087023_1334089616458 was not called" textStatus: "parsererror" 

虽然在Firefox中我可以看到JSON值,但执行属于Ajax请求的error handling程序。

我的Ajax请求是:

 function CallService() { $.ajax({ type: "GET", url: "http://SomeService/EmpService.svc/GetValues?dv=1455", contentType: "application/json; charset=utf-8", dataType: "jsonp", processdata: false, success: function (data) { ServiceSucceeded(data); }, error: function (jqXHR, textStatus, errorThrown) { debugger; alert("Service Error"); ServiceFailed(jqXHR, textStatus, errorThrown); } }); } 

在WCF服务端,我已将CrossDomainScriptAccess配置为true:

    

我从服务器获得的JSON响应是:

 [{"Message": "Stop On Duty", "MessageTime": "\/Date(1334068773893-0500)\/"}, {"Message": "Start On Duty", "MessageTime": "\/Date(1334068763540-0500)\/"}, {"Message": "App_testing_4102012924am", "MessageTime": "\/Date(1334068533627-0500)\/"}, {"Message": "Kunal_testing_4102012924am", "MessageTime": "\/Date(1334067945510-0500)\/"}, {"Message": "Alert: Door Open", "MessageTime": "\/Date(1334066280963-0500)\/"}] 

我在设置中遗漏了什么。 如果将服务移动到同一域,则整个代码可以正常工作。

我调查了类似的post,但无法完成这项工作。

好吧,我自己想通了。 解决方案是修改包含服务详细信息的配置文件

我在配置文件中添加了标准端点和绑定

           

我还需要添加来使其工作:

              
  [OperationContract] [WebGet( ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, RequestFormat=WebMessageFormat.Json, UriTemplate = "GetEmployeeJson")] List GetEmployeeJson(); 

Web.config文件

                         

Jquery ajax调用wcf服务

  $.ajax({ type: "GET", contentType: "application/javascript", crossDomain: true, dataType: 'jsonp', cache: true, url: 'http://localhost:49349/Service1.svc/GetEmployeeJson', success: function (data) { var html = []; alert(data[0].lastname); $.each(data, function (index, value) { $("#TableID").append("" + value.HREmpId + "" + value.firstName + "" + value.lastname + "" + value.address + "" + value.city + ""); }); }, error: function (xhr, ajaxOptions, thrownError) { alert("here error"); alert(thrownError); if (xhr != null) { var err = JSON.parse(xhr.responseText); //you can throw a code-behinde Exception and it will automatically //render to a valid JSON string when we rerieve the responseText alert("ErrorMessage: " + err.Message + " StackTrace: " + err.StackTrace); } } });