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();
}
}
});
添加回答
舉報