jQuery 1.6跨域请求无效

时间:2011-05-22 05:31:23

标签: jquery cross-domain

我正在测试一个从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(); }
    });
}

1 个答案:

答案 0 :(得分:1)

尝试附加“?callback =?”到创建ajax请求的URL。例如,“http:// localhost:61616 / ZifmiaService / Register / foo / bar / foo bar/david@company.com?callback=?” 。

如果您的网址包含查询字符串,则应添加“& callback =?”。