javascript - 甚至在单击 jQuery 按钮的第一行之前首先调用 AJAX 函数,为什么?
问题描述
我正在开发 MVC 应用程序,我必须在按钮单击时隐藏按钮并在 ajax 请求完成时显示。但是在所有请求完成后按钮隐藏。以下是我尝试过的。
<input type="button" id="btnCalculateAndSave" value="Calculate & Save" style="float: right" />
下面是 jQuery 点击,甚至在同一个按钮点击时也有 ajax 函数调用。
$("#btnCalculateAndSave").on("click", function (e) {
$("#btnCalculateAndSave").hide();
//Several lines for validation
$.ajax({
url: '@Url.Action("myControllerFunction", "myController")',
type: "GET",
async: false,
cache: false,
dataType: "JSON",
data: {
"p1": v1,
"p2": v2
},
success: function(result) {
}
}
}
});
因为我必须防止多次按钮单击事件。所以按钮是隐藏的,但是在所有 ajax 过程发生之后,即使按钮隐藏代码也在 jQuery click 事件的第一行。
解决方案
请在隐藏函数中编写主要代码。
$("#btnCalculateAndSave").hide(function(){ /* Main Code */ });
以下是您的主要代码。
$("#btnCalculateAndSave").on("click", function (e) {
$("#btnCalculateAndSave").hide(function(){
$.ajax({
url: '@Url.Action("myControllerFunction", "myController")',
type: "GET",
async: false,
cache: false,
dataType: "JSON",
data: {
"p1": v1,
"p2": v2
},
success: function(result) {
}
}
});
});
});