Angular JS $ http请求未到达ie8中的服务器

时间:2013-03-11 03:05:17

标签: internet-explorer-8 angularjs

我在ie8上使用$ http时遇到问题。在我点击刷新之前,请求没有到达服务器。回到相同的链接仍然有同样的问题,直到我再次点击刷新。

奇怪的是,如果Web服务器在LAN上并且请求发送到LAN中的服务器,它可以正常工作。但是如果网络服务器是远程托管的,它就不起作用了!

以下是代码:

的index.html

{{test}}

控制器

app.controller(
    "TestController",
    function( $scope, $http) {
        var url = '/test/get_data';
        $http.get(url).success(function(data) {
            $scope.test = data;
        });
    }
);

我收到此错误: TypeError:对象不支持此属性或方法未定义

我之前准备了一个JSFiddle,但是ieF中的JSFiddle被打破,所以我不在这里提供它。

不幸的是,我没有可以与您分享的远程服务器。

修改 以前我使用了一个外部URL,它给了我“拒绝访问”错误,即因为同源策略,如下面的一个答案所述。但这不是我原来的问题。当请求来自同一个来源时,我仍然遇到上述问题

2 个答案:

答案 0 :(得分:1)

这是一个跨域请求,由于Same Origin Policy而不允许在ajax中使用。

这有两种解决方案 1. JSONP:这是一种使用javascript回调机制处理跨域ajax请求的跨浏览器方式 2. CORS:这是一个HTML5标准,它由除IE之外的大多数现代浏览器实现

Mongodb lab不支持jsonp,因为它支持CORS,这就是为什么你的请求在IE中失败并在Chrome和其他浏览器中运行。

根据this post,他们没有任何支持jsonp的计划,所以我并不认为有一种方法可以在IE中使用它。

答案 1 :(得分:0)

所以我找到了修复...希望这可以帮助那些遇到这个问题的人

  1. 需要在jQuery之后加载Angular脚本。我没有这个,因为我使用自动加载jQuery的Yii框架和jQuery之后没有包含angular。
  2. 所有控制器功能都需要位于正文部分的末尾(就在结束之前)
  3. 更新到角度1.0.5似乎可以解决问题。 1.0.4中出现了上述所有技巧的问题。我认为与修复791804bd
  4. 有关