location.reload (истина);не работает в ie11 - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть скрипт, который перезагружает страницу, когда значение> = 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 голосов
/ 14 февраля 2019

поместите 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);
}
});
0 голосов
/ 14 февраля 2019

Попробуйте переместить оператор 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);
  }
});
0 голосов
/ 14 февраля 2019

Похоже, вы нигде не определили self, поэтому там может быть ошибка.Кроме того, вы пытаетесь присвоить значение href как целое значение location, которое должно быть объектом.Вместо этого попробуйте:

window.location.href = window.location.href;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...