2012-03-21 47 views
0

我在一个url中有一些asmx web服务(即example.com/Entities/WebServices假设example.com是我的域名)。这样做的目的是能够像所有应用程序中的员工那样访问域数据。因此,根据举例来获取员工数据,我使用的方法example.com/Entities/WebServices/EmployeeWs.asmx/GetAll

当我尝试从我的本地主机与JQuery.Ajax获取员工数据时,它在IE8上正常工作。但是,当使用Firefox时,$ .ajax调用将我发送到成功函数,但带有空信息(也检查了来自萤火虫的响应,它是一个200 OK - 0字节)

我已经把jQuery.support.cors = true;但它在Firefox或Chrome中没有帮助。

我也尝试在example.com/TestProject中发布测试应用程序,但结果是一样的。它只适用于IE。

是否有人知道可能是错误的原因?

使用IE8,Firefox 8.0.1,Chrome 11.0.6。 JQuery 1.7.1

在此先感谢。

var requestedUrl = "http://example.com/Entities/WebServices/EmployeeWs.asmx/GetAll"; 

jQuery.support.cors = true; 

$.ajax({ 
    type: "POST", 
    contentType: "application/json", 
    url: requestedUrl, 
    dataType: 'json', 
    contentType: "application/json; charset=utf-8", 

    success: 

    function(result) { 

     alert("ok. " + result); 

    }, 

    error: 

    function(xhr) { 

     alert("err. " + xhr.responseText); 

    } 

}); 

回答

-1

端口/协议是一样的吗?例如,如果您从https://example.com调用http://example.com,则可能发生此错误。

编辑:看看那里。我没有自己测试。 How do jQuery do its cross-domain ajax calls and how can I replicate em with mootools

+0

是的,我使用http协议,但每个Web应用程序都驻留在同一服务器中的特定端口和应用程序中。如果我不使用jQurey.support.cors = true语句,那么在IE中也会出现跨域错误。但把它放在浏览器中,Firefox中没有错误,但也没有返回数据。 – 2012-03-21 13:31:39

+1

我认为你的问题来自于那。如果每个应用都位于不同的端口上,则会将其视为其他域。 – haltabush 2012-03-21 13:41:06

+0

是的,我知道,但它应该工作,如果我使用jQuery.support.cors = true,是吗?一个也在IE浏览器工作,我收到任何浏览器没有错误,只是没有收到数据。 – 2012-03-21 14:34:36