首页 > 解决方案 > 甚至在单击 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 事件的第一行。

标签: javascriptjqueryajaxasp.net-mvc

解决方案


请在隐藏函数中编写主要代码。

$("#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) {
    }  
  }
});

});

});

推荐阅读