#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 является асинхронным.