【发布时间】:2011-02-19 11:55:20
【问题描述】:
我使用 jQuery 调用跨域 Web 服务。来自本地主机的 Web 服务调用成功完成,在从其他域调用时,我收到 HTTP 302 状态码错误。
这里是网络服务调用;
$.ajax({
type: "POST",
url: "http://wthdevsr01:45452/webservices/GetUserAcceptancePolicyStatus.asmx/GetAcceptancePolicyReadStatus",
data: '{"userID" : \"' + $.trim(userID) + '\", "documentID" : \"' + $.trim(documentID) + '\"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
if (result.d != '') {
if (result.d == '1') {
alert("ACCEPTED");
}
else if (result.d == '0') {
alert("NOT ACCEPTED");
}
else {
alert(result.d);
}
}
},
error:function (result) {
alert('Service call failed: ' + result.status + '' + result.statusText);
}
});
我想知道问题出在哪里?有什么想法吗?
【问题讨论】:
-
简单地说,你不能在不使用JSONP的情况下进行跨域AJAX调用,出于安全原因,同源策略是禁止的。
-
@Nick: 如何进行跨域 JSONP AJAX 调用?
-
JSONP 不是 AJAX,它实际上是在创建一个
<script>标签,它是一个普通的 GET 请求,返回一个包裹在函数调用中的 JSON 对象,google 为“ASP.Net JSOP Web 服务”,即您要创建的内容...远程服务器必须积极支持 JSONP(不仅仅是 JSON),这是第一步。 -
阅读 jQuery 的 .ajax() 方法的文档。另请注意,您不能对 JSONP 调用执行 POST。必须是 GET。
标签: jquery asp.net web-services http-status-code-302