【发布时间】:2019-08-05 06:54:28
【问题描述】:
我有一个以下 ajax 操作,旨在在发送 ajax 请求之前发送 (1) show spinner gif,在请求完成之后,(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 后的页面。
我什至尝试了hidingsuccess 回调本身中的 gif,而不是使用 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);
}
},
两者都给出相同的结果。
【问题讨论】:
-
写 $('#ajax_loader_my').hide();在成功函数的开始,然后尝试
-
@RK_15 一样..
-
发生这种情况是因为 $(...).hide() 是异步的。
-
使用 $('#ajax_loader_my')[0].style.display = "none" 然后尝试
-
@Azima,请尝试我更新的答案。尝试使用一些内联 html 来显示成功或错误,或者可以登录到控制台,而不是警报。
标签: javascript jquery ajax asynccallback