我正在测试一个从Web服务请求数据的vanilla html网站。我的网站在端口81上本地运行,Web服务在端口61616上运行。
这在jQuery 1.4中有效。
我已经升级到1.6并且认真考虑回去,因为跨域实现已经破坏。
在IE中,我找不到资源,显示的URL是除hostname:port之外的所有内容,如果没有,则不会找到资源(当然)。
在Chrome中,我收到以下错误:XMLHttpRequest无法加载http://localhost:61616/ZifmiaService/Register/foo/bar/foo bar/david@company.com。 Access-Control-Allow-Origin不允许原点http://localhost:81。
Web服务具有Access-Control-Allow-Origin:* set,因此服务器端允许跨域请求。
我也有:
$ .support.cors = true;
在我的客户端javascript代码中。
我没有使用jsonp,并且认为我不需要使用正确的设置。
我还能做错什么,或者我应该向jQuery报告错误?
如上所述,网址变为61616网址。
this.register = function (username, password, nickName, emailAddress, callback, errorCallback) {
$.ajax({
type: "GET",
url: ZifmiaRegister.format(username, password, nickName, emailAddress),
crossDomain: true,
dataType: "json",
success: function (zifmiaRegistrationViewModel) {
callback(zifmiaRegistrationViewModel);
},
error: function (xhr, textStatus, errorThrown) {
errorCallback(xhr, textStatus, errorThrown);
},
beforeSend: function () { $(ajaxLoading).show(); },
complete: function () { $(ajaxLoading).hide(); }
});
}
答案 0 :(得分:1)
尝试附加“?callback =?”到创建ajax请求的URL。例如,“http:// localhost:61616 / ZifmiaService / Register / foo / bar / foo bar/david@company.com?callback=?” 。
如果您的网址包含查询字符串,则应添加“& callback =?”。