这段javascript总是在firefox&中返回null。 chrome,但在Internet Explorer中工作正常:
$.ajax({
url: "http://mymachine/mywebservice.asmx/myfunction",
data: "{ 'q': 'hotels', 'limit': '10' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
alert(data == null);
}
});
在fiddler中, IE请求看起来像这样:
POST http://remotemachine/webservice.asmx/functionname HTTP/1.1
Content-Type: application/json; charset=utf-8
Accept-Language: en-gb
Referer: http://localmachine/
Accept: application/json, text/javascript, */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET4.0C; .NET4.0E)
Host: test.maznet.biz
Content-Length: 32
Connection: Keep-Alive
Pragma: no-cache
{ 'q': 'hotels', 'limit': '10' }
运行完全相同的javascript的firefox请求,如下所示:
OPTIONS http://remotemachine/webservice.asmx/functionname HTTP/1.1
Host: remotehost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://mymachine
Access-Control-Request-Method: POST
编辑:香港专业教育学院修改了确切的函数名称和域名,以便原谅,所以原谅任何错别字
答案 0 :(得分:2)
哦,我这五个小时的工作,我刚刚找到答案。 Firefox / Chrome不允许跨域JSON请求,因此它在旧的松弛安全IE8中工作,而不是在更“安全”的浏览器中。卫生署!
答案 1 :(得分:0)
尝试直接通过ajax转到您要求的网址。获取请求的完整URL(来自Firefox中的FireBug)并在那里运行以查看Firefox返回的内容。然后你可以通过Fiddler在IE中尝试同样的事情。如果URL以任何方式不同,您应该能够很快看到错误。如果它们相同,那么在每个浏览器中加载URL应该会显示结果的差异。