2 回答
TA贡献2041条经验 获得超4个赞
如果您希望在单击按钮后显示某些内容,并且该按钮正在触发 ajax 请求,则将下面的代码放在括号内success: function (BRresponse) {,而不是放在 ajax 请求之外。
$("#prcs").hide();
$("#progressbar").hide();
$("#successMessage").html(message);
if (message.length > 0) {
$("#successMessage").show();
}
$("#dangerMessage").html(errorMessage);
if (errorMessage.length > 0) {
$("#dangerMessage").show();
}
TA贡献1797条经验 获得超6个赞
删除这个:
async: false,
您的浏览器应该在调试控制台上给您一条警告消息,说明该功能已被弃用。但更重要的是,您明确告诉浏览器同步执行异步操作,所有操作都在单个线程上进行。这意味着在所有这些操作完成之前,用户界面无法更新。
允许您的异步操作是异步的,以便 UI 可以在操作期间更新。在这些操作之后需要发生的任何事情都应该在它们的回调中调用,而不仅仅是放在它们下面的代码中。
简而言之,async: false是您不需要、不想要并且应该完全避免的拐杖。无论您尝试使用它来解决什么问题都没有解决,它只是被一个新问题掩盖了。
编辑:特别是在您的代码中,所有这些都应该在success处理函数中,而不是在调用之后$.ajax():
$("#prcs").hide();
$("#progressbar").hide();
$("#successMessage").html(message);
if (message.length > 0) {
$("#successMessage").show();
}
$("#dangerMessage").html(errorMessage);
if (errorMessage.length > 0) {
$("#dangerMessage").show();
}
例如:
$.ajax({
url: "/Logistics/jCustomsBookBr",
type: "POST",
data: { month: month },
success: function (BRresponse) {
if (BRresponse.success) {
if (message.length > 0) { message += " <br> "; }
message += BRresponse.message;
} else {
if (errorMessage.length > 0) { errorMessage += " <br> "; }
errorMessage += BRresponse.message;
}
$("#prcs").hide();
$("#progressbar").hide();
$("#successMessage").html(message);
if (message.length > 0) {
$("#successMessage").show();
}
$("#dangerMessage").html(errorMessage);
if (errorMessage.length > 0) {
$("#dangerMessage").show();
}
}
});
添加回答
举报