У меня есть следующая операция ajax, предназначенная для (1) show spinner gif
перед отправкой ajax
запроса и после того, как запрос завершен, (2) hide
gif и 3 display
соответствующие сообщения с предупреждениями.Наконец (4) reload
страница.
Вот код:
$.ajax({
url: rUrl,
data: {
id: rID,
requisitionStatus: rStatus,
comment: rComment
},
type: "POST",
cache: false,
beforeSend: function() {
$("#requisitionStatusDialog").dialog('close');
$('#ajax_loader_my').show();
},
success: function(data, resp) {
var json = data;
var obj = JSON && JSON.parse(json) || $.parseJSON(json);
if (obj.status == "success") {
alert('Success! ' + obj.message);
location.reload();
} else if (obj.status == "error") {
alert('Error!' + obj.message);
}
},
error: function(data, resp) {
$("#updateDialog").dialog('close');
console.log(resp);
},
complete: function() {
$('#ajax_loader_my').hide();
}
});
Но в этом случае сначала появляется alert
, в то время как spinner gif
все еще появляется, и reloads
страница после нажатия OK
.
Я даже попробовал hiding
GIF-файл в success
самом обратном вызове вместо использования complete
:
success: function(data, resp) {
var json = data;
var obj = JSON && JSON.parse(json) || $.parseJSON(json);
if (obj.status == "success") {
$('#ajax_loader_my').hide();
alert('Success! ' + obj.message);
location.reload();
} else if (obj.status == "error") {
alert('Error!' + obj.message);
}
},
Оба дают одинаковый результат.