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。