jquery - 即 - Ajax请求适用于所有浏览器,但是 - 内容类型已更改

时间:2012-02-21 15:31:04

标签: javascript jquery ajax internet-explorer-8

我在服务器中有一个特定的xml答案,我想在我的页面的AJAX请求中使用它作为原点。正确配置了服务器,以便跨域请求起作用。

问题是内容类型 - 它已修复为'text/html',我无法更改。

大多数浏览器似乎都乐于接受具有该内容类型的XML响应。到目前为止,我的代码适用于任何最新版本的Firefox,Chrome和Safari。

但Internet Explorer 8给我带来了麻烦。

我准备了一个试图模拟我的问题的jsfiddle:

http://jsfiddle.net/LPa45/4/

在那个jsfiddle上,对/echo/html服务(在内容类型中返回'text/html')发出了一个AJAX请求,但随后它被用作xml响应。 "accepts"参数,即使是为此特定目的而设置,也不会对任何事情产生任何影响 - 我可以删除它,一切都可以在FF,Chr上运行。

但是我不能让它在IE8上运行。有人有任何提示吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

查看控制台输出(我在IE8模式下使用IE9,因此在纯IE8中可能不一样),因为Array.Map()函数不可用而导致错误。谷歌搜索似乎暗示这是在IE9中添加的。

有关可以解决问题的地图功能,请参阅this answer

小提琴:http://jsfiddle.net/WvmBL/

答案 1 :(得分:1)

问题在于我认为同源策略已经通过Apache的Access-Control-Allow-Origin "*"指令解决了,但事实证明 IE8不尊重它

我唯一的选择是实施makeshift proxy server

但是!

一旦代理服务器运行起来,我就完全找到了akiller提及并回答的问题 - IE8没有Array.map

所以,我标记答案是正确的,但请记住,这不是完整的答案!你也需要一个代理。