ASP.NET:如何在客户端ajax完成后才提交回发

我有一个按钮编码如下:

 

saveAllFilt是一个调用常见JQuery ajax调用的函数。 像这样的东西:

  function saveAllFilt() { jQuery.ajax({ async: false, dataType: 'json', contentType: "application/json; charset=utf-8", type: "POST", url: contentURL, data: dataarray, success: function (msg) { // Some processing here. ONLY WHEN IT IS DONE, I NEED TO HAVE POSTBACK. }, error: function (data) { } }); // end of ajax call. 

}

我想要这样的事情:只有在ajax调用完成后才能继续执行onClick。 我怎么能这样做?

您可以从按钮中删除OnClick属性,并在OnClientClick属性中返回false,如:

  

并使用该OnClick属性设置隐藏按钮,如:

  

并在您的ajax调用的成功方法中单击该按钮,如:

 success: function (msg) { // Some processing here. ONLY WHEN IT IS DONE, I NEED TO HAVE POSTBACK. $('#hdnButton').click(); }, 

这很容易。 在成功函数中调用回发方法。 Chekout以下代码。

改变你的标记

  

更改您的java脚本代码

 function saveAllFilt() { jQuery.ajax({ async: false, dataType: 'json', contentType: "application/json; charset=utf-8", type: "POST", url: contentURL, data: dataarray, success: function (msg) { // Some processing here.Now do the post postback <%=Page.ClientScript.GetPostBackEventReference(save_all_filt,"") %> }, error: function (data) { } }); 

你的想法对我来说似乎很奇怪。你为什么试图在回发之前调用ajax。

你离它不远了。

代替:

尝试:

不同的是,而不是OnClientClick="a= saveAllFilt(); return a;" 只需要OnClientClick="return saveAllFilt()"

如果返回true,则在ajax success函数内部不起作用。 在ajax成功函数中使用__postback fucntion。

这将仅在ajax调用完成后提交回发。

尝试在.ajax()调用的success属性中的代码后return true 。 优先级总是这样:

  • 客户端
  • 服务器端

仅当客户端返回true ,才会启动服务器单击。

 function saveAllFilt() { jQuery.ajax({ async: false, dataType: 'json', contentType: "application/json; charset=utf-8", type: "POST", url: contentURL, data: dataarray, success: function (msg) { // Some processing here. ONLY WHEN IT IS DONE, I NEED TO HAVE POSTBACK. return true; }, error: function (data) { return false; } }); } 

另外,删除onclick属性 – HTML中的非高性能属性(在我看来)并使用jquery的on()

在函数调用中,

  OnClientClick="return saveAllFilt()"; 

在Ajax中,

如果ajax调用成功则返回true,并且对于每个其他情况返回false。