-1

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

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

这是代码:

索引.html

{{test}}

控制器

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

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

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

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

编辑 以前我使用了一个外部 url,它在 ie 中给了我“拒绝访问”错误,因为下面的一个答案提到了同源策略。但这不是我原来的问题。当请求来自同一来源时,我仍然遇到上述问题

4

2 回答 2

1

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

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

Mongodb 实验室不支持 jsonp,因为它支持 CORS,这就是为什么您的请求在 IE 中失败并在 Chrome 和其他浏览器中工作的原因。

根据这篇文章,他们没有任何支持 jsonp 的计划,所以我不认为有办法在 IE 中实现这项工作。

于 2013-03-11T03:37:40.637 回答
0

所以我找到了解决方法......希望这可以帮助任何遇到这个问题的人

  1. Angular 脚本需要在 jQuery 之后加载。我没有这个,因为我使用的 Yii 框架会自动加载 jQuery,并且 jQuery 之后没有包含 angular。
  2. 所有控制器功能都需要在主体部分的末尾(就在关闭之前)
  3. 更新到 angular 1.0.5 似乎可以解决问题。问题发生在 1.0.4 以上所有技巧。我认为与修复791804bd有关
于 2013-03-12T00:22:47.410 回答