2011-05-22 71 views
1

我测试了一个从web服务请求数据的vanilla html网站。我的网站在本地端口81上运行,网络服务在端口61616上运行。jQuery 1.6跨域请求不起作用

这个工作在jQuery 1.4中。

我已经升级到1.6,并认真考虑回去,因为跨域的实现被打破。

在IE中,我找不到资源,显示的URL是除hostname:port之外的所有内容,没有它,资源(当然)将不会被找到。

在Chrome中出现以下错误:XMLHttpRequest无法加载http://localhost:61616/ZifmiaService/Register/foo/bar/foo bar/[email protected]。 Access-Control-Allow-Origin不允许原产地http://localhost:81

Web服务具有Access-Control-Allow-Origin:* set,因此服务器端允许跨域请求。

我也有:

$ .support.cors = true;

在我的客户端JavaScript代码。

我没有使用jsonp,也不认为我需要使用正确的设置。

我还能做什么错,或者我应该向jQuery报告错误?

    • 添加的代码* *

如上描述的URL成为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.6的需求有哪些变化? – 2011-05-22 05:36:00

+0

@david,发布你的ajax代码,我不认为1.6有什么问题,有些设置可能已经改变..发布你的ajax代码,我们可以看到有什么错误。 – kobe 2011-05-22 05:48:07

+0

在主要问题中添加了代码。我使用字符串格式将服务URL(该服务构建在WCF 4.0 Rest中)组合在一起。您可以在http://zifmia.textfyre.com/ZifmiaService/help – 2011-05-22 14:35:02

回答

1

试着追加“?callback =?”到发出ajax请求的URL。例如,“http:// localhost:61616/ZifmiaService/Register/foo/bar/foo bar/[email protected]?callback=?” 。

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

+0

这有助于我的问题。 – 2011-06-07 22:07:05