当前位置: 首页 > 面试题库 >

为什么此jQuery Ajax调用仅在IE9中失败(即使在IE8和IE7中也可以正常工作)

祁聪
2023-03-14
问题内容

我有一个网站,我像这样拨打ajax:

            // perform an ajax request to generate a new subscriber account
            jQuery.ajax({
                type: 'POST',
                url: '/index.php?option=com_content&view=article&id=45&tmpl=component',
                data: postVars,
                success: handleResponse,
                error: function(jqXHR, textStatus, errorThrown) {
                    alert ('response: ' + jqXHR.responseText);
                    alert ('code: ' + jqXHR.getResponseHeader('X-Subscriber-Status'));
                }
            });

所请求的页面除了返回一个数字的状态代码外没有任何作用,并且除IE9之外,在其他所有浏览器上都可以正常运行。该脚本与请求页面托管在同一域中,因此跨域脚本应该没有任何问题。

我终于找到了正在发生的事情,但我不知道如何解决。事实证明,Ajax请求成功完成,没有任何问题。我通过使用Fiddler来查看网络流量来验证了这一点。服务器使用HTTP状态代码200响应请求,主体仅包含一位数字响应代码。此时,jQuery执行错误处理程序,而不是预期的成功处理程序(在IE9中)。为什么要这样做?如何预防呢?这仅发生在IE9中。甚至IE8和IE7在完全相同的代码下也能正常工作!如您所见,我最终诉诸于检测IE9并使用XmlHttpRequest对象来执行此操作(顺便说一句就可以了)。

在我看来,这似乎是一个jQuery错误,但我在搜索中找不到任何提及。我真的是唯一一个经历过这种奇怪行为的人吗?


问题答案:

好吧,我终于找到了问题所在。事实证明,由于某种原因,jQuery / IE无法正确使用urlencode双引号。要求的网址是:

/search.json?callback=jQuery16105234487927080267_1313510362362&q=stocks或“股市”
-blueprint -empireavenue.com -learn&_ = 1313510362469

在jQuery执行ajax请求时,在所有其他浏览器中,它看起来像:

/search.json?callback=jQuery16105234487927080267_1313510362362&q=stocks%20OR%20%22stock%20market%22%20-blueprint%20-empireavenue.com%20-learn&_=1313510362469

但是无论出于什么原因,所有版本的IE都这样显示:

/search.json?callback=jQuery16105234487927080267_1313510362362&q=stocks%20OR%20"stock%20market"%20-blueprint%20-empireavenue.com%20-learn&_=1313510362469

这导致服务器不返回任何数据。



 类似资料:
  • 问题内容: 这是我尝试从中获取数据的示例网页。 http://www.makospearguns.com/product-p/mcffgb.htm xpath取自chrome开发工具,firefox中的firepath也能够找到它,但是使用lxml时,它只会为“ text”返回一个空列表。 使用以下命令打印树文本 显示数据在那里,但是xpath似乎无法找到它。我有什么想念的吗?我尝试使用lxml和

  • 问题内容: 是否可以在每次执行循环时回显?例如: 我不想看到循环结束时打印所有内容,而是希望它每次都打印每个结果。 问题答案: 最终解决方案 这就是我发现的: Flush在Apache的mod_gzip或Nginx的gzip下不起作用,因为从逻辑上讲,它正在对内容进行gzip处理,并且这样做必须缓冲内容才能对其进行gzip处理。任何类型的Web服务器gzip压缩都会影响此。简而言之,在服务器端,我

  • 问题内容: 这是我的代码 这段代码在IE8中工作正常,但是在Firefox和Chrome浏览器中却失败了。当我检查XHR对象时,它表示状态码为0。我检查了所有其他问题,没有一个问题可以帮助我识别问题。 让我知道,如果我在这段代码中做错了什么。如果$ .ajax有一些兼容性问题,请提出与其等效的建议。 更新: 我们在http://www.xml.com/pub/a/2005/12/21/json-d

  • 问题内容: 使用jQuery: Firefox和Chrome都可以按预期工作,但是IE会不断触发错误功能(使用时),而不是成功。错误状态为“ 0”,没有太大帮助。 我已经使用也试图与无济于事。 有任何想法吗? 问题答案: 我不能告诉你这是jquery还是IE中的错误,但是看起来XDomainRequest在IE中失败了。将此添加到URL: …因此响应将作为jsonp处理。 编辑: 看来Micros

  • 问题内容: 我需要添加一个表的2个单元格内容并显示它。下面的JavaScript命令在chrome或IE10中可以正常工作。 但不能在IE8或7中使用 。 结果, N 您能否告诉我 IE7或IE8中 的 等效命令 是什么 , 以读取表的单元格内容并将其转换为float然后添加。 问题答案: IE7 /8不支持textContent。后者具有称为innerText的不同属性,该属性返回DOM节点的文

  • 我想从Firebase获取数据,为此我已将Firebase集成到我的Flutter应用SciFish中。 在 pubspec.yaml 中,我添加了插件: 根目录中的fltterfire configure命令看起来很好: 我可以看到Android/应用程序/谷歌服务. 初始化Firebase后,我的如下所示: 在TemperaturePage中,我创建了获取数据的方法,但wait中的print语