【发布时间】:2012-04-23 04:44:58
【问题描述】:
我正在调用(Ajax 请求)WCF REST 服务,该请求是跨域请求。
如果我在同一个域中部署我的服务,一切都会像奶油一样工作。最终在生产中,服务将位于不同的域中。
我正在使用 jQuery 1.5.2。我的服务返回一个错误说:
errorThrown: "jQuery15208493315000087023_1334089616458 was not called"
textStatus: "parsererror"
虽然在 Firefox 中我可以看到 JSON 值,但执行落在 Ajax 请求的错误处理程序上。
我的 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:
<webHttpBinding>
<binding name="webHttpBindingWithJsonP"
crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
我从服务器得到的 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)\/"}]
我是否在设置中遗漏了任何内容。如果将服务移动到同一个域,则整个代码都可以正常工作。
我查看了类似的帖子,但无法完成这项工作。
【问题讨论】:
-
希望你也添加了跨域策略文件,查看这里msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx
-
是的,根目录中已经存在