Javascript 未在IE11上调用$http.success回调

Javascript 未在IE11上调用$http.success回调,javascript,angularjs,internet-explorer,Javascript,Angularjs,Internet Explorer,我有一个AngularJS应用程序,它使用$http服务加载一些数据,然后根据修改后的数据更新相应的html元素并更新UI。代码如下: app.controller("RankingCtrl", function ($scope, PostModel, DeserializePosts, $http, $cookies){ var mainContainer = $('#mainContainer'); $scope.error = null; function loa

我有一个AngularJS应用程序,它使用$http服务加载一些数据,然后根据修改后的数据更新相应的html元素并更新UI。代码如下:

app.controller("RankingCtrl", function ($scope, PostModel, DeserializePosts, $http, $cookies){
    var mainContainer = $('#mainContainer');

    $scope.error = null;
    function loadTop(){
        $http({
            type: 'GET',
            url: '/ranking',
            headers: {
                'X-Requested-With': 'XMLHTTPRequest',
            }
        }).success(function(topPosts){
            var mostLikedPosts = DeserializePosts(topPosts.mostLiked);
            var mostViewedPosts = DeserializePosts(topPosts.mostViewed);
            var mostCommentedPosts = DeserializePosts(topPosts.mostCommented);

            $scope.topLiked = mostLikedPosts;
            $scope.topViewed = mostViewedPosts;
            $scope.topCommented = mostCommentedPosts;
        }).error(function(error){
            errorHandler(error.statusCode, error);
        }).finally(function () {
            $('#mainContainerSpinner').hide();
            mainContainer.fadeIn();
        });
    }
    loadTop();
});
我的问题是,显然没有调用.success函数,因为执行了.finally函数,但UI没有使用任何下载的元素进行更新。如果我在IE浏览器窗口中按住ctrl-R键,则该功能正常工作,UI显示预期的元素。这个问题不会发生在Chrome或FireFox上

有趣的是,当我从IE打开F12开发工具来调试这个JS代码时,问题并没有发生。看起来更像是IE11上的一个bug,但我想知道是否有其他人见过这种行为,以及是否有解决方法可以尝试。目前,我的用户在访问页面时需要刷新页面,因为只有页面刷新才能按预期在这个AngularJS控制器上更新UI


更新:UI未得到更新,因为.success函数具有引发异常的
forEach
指令。之所以会发生这种情况,是因为浏览器发送$http请求,而不发送上面代码中指定的“X-request-With”头,因此它收到的响应是html而不是json。强制浏览器刷新会使浏览器将此头添加到http请求。

您是否尝试使用$http config的
缓存
选项?@yazaki,没有明确使用缓存。为什么?我应该考虑在那里添加一些更改吗?嗨,路易斯!从出现问题的情况判断(仅在IE打开时发生,而不是在IE开发工具打开时发生)。在我的经验中,浏览器缓存常常与这些问题有关。顺便说一句,我读了你的更新。为了解决您的问题,我理解$http不会仅在IE中设置标题“X-request-With”(而不是打开devtool)。我的理解正确吗?当我尝试类似的代码时,我的IE11(11.0.9600.17691)总是按预期发送头。以下是完全不同的一点,
键入:“GET”
jsut是否拼写错误?我认为
方法:“GET”
是正确的。