Имитация эффекта загрузки в Chrome и IE

#javascript #jquery #google-chrome

#javascript #jquery #google-chrome

Вопрос:

Я выполняю процесс через AJAX после нажатия кнопки

  $(document).ready(function(){
      $("#myButton").click(function(){
            //Set loading text
            $(this).html("Loading...");

            //Do the ajax call
            $.ajax(....


            //Finaly reset my button text.
            $(this).html("Save Changes");
      }); 

 });
 

Это работает в Firefox, но, когда я тестирую его в Chrome и IE, он не работает.
Кто-нибудь может мне помочь?

Я также попытался запустить модал с загрузочным сообщением, а затем закрыть его, но он никогда не появляется, только в Firefox.

Комментарии:

1. Меняется ли html кнопки вообще?

2. Нет, я удалил последнюю строку [$(this).html(«Сохранить изменения»);] и кнопка изменила свой текст на «Загрузка …», но сразу после завершения вызова ajax.

3. Кнопка не генерируется на лету, просто скрыта, я пробовал on (‘click’, … но это не работает

Ответ №1:

Вы должны добавить текст кнопки сброса в обратные вызовы.

     $.ajax({
    url: ...
    success: function (result) {
        //Finaly reset my button text.
                $(this).html("Save Changes");

    },
    error: function (x, t, m) {
        //Finaly reset my button text.
                $(this).html("Save Changes");
    }
});
 

Комментарии:

1. Я обнаружил, что у меня установлено свойство async: false, поместите действие в обратный вызов, спасибо.

Ответ №2:

Восстановление должно быть в одном из обратных вызовов Ajax (вероятно complete ). В противном случае он просто немедленно сбрасывает его, поскольку вызов Ajax является асинхронным.