I am using the __doPostBack method to refresh the UpdatePanel in javascript. I just want to wait for the update panel to get updated and then execute the subsequent javascript code. How do I wait on an asynchronous method to complete before I proceed further with execution (like in my case the asynchronous method is __doPostBack)? I want to simulate something like the way it is doing in C# using Thread.Join() method.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Use the Sys.WebForms.PageRequestManager endRequest event:
<script type="text/javascript" language="javascript">
function clearPostBack() {
$get('__EVENTTARGET').value = $get('__EVENTARGUMENT').value = '';
Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(clearPostBack);
// TODO: anything you want after __doPostBack
}
function myPostBack(eventTargetUniqueId, eventArgument) {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(clearPostBack);
__doPostBack(eventTargetUniqueId, eventArgument);
}
</script>
回答2:
Here is a much better way, which allows you to do something in case of successfull request and/or error:
$.ajax({
type: "POST",
data:
{
'__EVENTTARGET': '<%=YourButtonName.ClientID %>'
}
}).done(function (data) {
alert("ok");
}).fail(function (p1, p2, p3) {
alert("error");
});