Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax jquery,在IE中工作,在Firefox中完全崩溃_Jquery_Ajax - Fatal编程技术网

Ajax jquery,在IE中工作,在Firefox中完全崩溃

Ajax jquery,在IE中工作,在Firefox中完全崩溃,jquery,ajax,Jquery,Ajax,这段javascript在firefox和chrome中始终返回null,但在internet explorer中工作正常: $.ajax({ url: "http://mymachine/mywebservice.asmx/myfunction", data: "{ 'q': 'hotels', 'limit': '10' }", dataType: "json", type: "POST", contentType: "application/js

这段javascript在firefox和chrome中始终返回null,但在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' }
firefox请求运行完全相同的javascript,如下所示:

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

编辑:为了方便起见,我修改了确切的函数名和域,因此请原谅任何打字错误

尝试直接通过ajax访问您请求的URL。获取请求的完整URL(来自Firefox中的FireBug)并在那里运行以查看Firefox返回的内容。然后你可以通过Fiddler在IE中尝试同样的东西。如果URL在任何方面都不同,您应该能够很快看到错误所在。如果它们是相同的,那么在每个浏览器中加载URL应该会显示结果的差异。

哦,天哪,我花了五个小时来研究这个问题,我刚刚找到了答案。Firefox/Chrome将不允许跨域JSON请求,因此它在安全性良好的旧的slack安全IE8中工作,而不是在更“安全”的浏览器中工作。啊

这看起来真的很奇怪。您是否仔细检查了Firebug控制台(或TamperData,或类似的东西)以验证奇怪的“选项”请求?字符串“OPTIONS”甚至不存在于jQuery源代码中……Firebug返回了一个空的响应字符串,我想我快疯了!我找到了答案,把它贴在这里。