location.reload(true);在IE11中不工作

时间:2019-02-14 11:53:38

标签: javascript jquery ajax internet-explorer

我有一个脚本,当值> = 100时会重新加载页面,问题是location.reload(true);。在IE11中不工作,我也尝试过window.location = self.location.href;但是我遇到了同样的问题,在其他浏览器中效果很好。

$(function () {
if (value < 100) {
    var timer = setInterval(function () {
        $.ajax({
            type: "GET",
            url: $("#ancUrl").attr('href'),
            data: {},
            success: function (msg) {
                console.log("This is msg:" + msg);
                var msgInt = parseInt(msg);
                if (msgInt > value)
                    value = msgInt;
            },
            error: function (err) {
                console.log(err.responseText);
            },
            dataType: "json"
        });
        $("#progress-bar").width(value.toString() + "%");

        if (value >= 100) {
            clearInterval(timer);
            window.location = self.location.href;
        }
    }, 2000);
}

});

3 个答案:

答案 0 :(得分:0)

您似乎没有在任何地方定义self,因此您可能在这里有错误。除此之外,您还尝试将href的值分配为location的整个值-这是一个对象。相反,请尝试:

window.location.href = window.location.href;

答案 1 :(得分:0)

将if放置在成功函数中,ajax是异步的,if将立即执行,但是ajax完成后值将更改,因此代码可能永远不会到达if语句

$(function () {
if (value < 100) {
    var timer = setInterval(function () {
        $.ajax({
            type: "GET",
            url: $("#ancUrl").attr('href'),
            data: {},
            success: function (msg) {
                console.log("This is msg:" + msg);
                var msgInt = parseInt(msg);
                if (msgInt > value) {
                    value = msgInt;
                    $("#progress-bar").width(value.toString() + "%");
                    if (value >= 100) {
                       clearInterval(timer);
                       location.reload(true);
                     }
                }
            },
            error: function (err) {
                console.log(err.responseText);
            },
            dataType: "json"
        });



    }, 2000);
}
});

答案 2 :(得分:0)

尝试将if语句移到成功回调中。

就像您可以将间隔清除到同一堆栈中一样,然后重新加载页面

$(function() {
  if (value < 100) {
    var timer = setInterval(function() {
      $.ajax({
        type: "GET",
        url: $("#ancUrl").attr('href'),
        data: {},
        success: function(msg) {
          console.log("This is msg:" + msg);
          var msgInt = parseInt(msg);
          if (msgInt > value)
            value = msgInt;
          $("#progress-bar").width(value.toString() + "%");
          if (value >= 100) {
            clearInterval(timer);
            window.location = self.location.href;
          }
        },
        error: function(err) {
          clearInterval(timer);
          console.log(err.responseText);
        },
        dataType: "json"
      });

    }, 2000);
  }
});