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

发布于 2021-01-31 17:39:11

我有一个网站,我像这样拨打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错误,但我在搜索中找不到任何提及。我真的是唯一一个经历过这种奇怪行为的人吗?

关注者
0
被浏览
106
1 个回答
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看