Как ждать завершения метода __doPostBack в javascript? - PullRequest
6 голосов
/ 28 июня 2011

Я использую метод __doPostBack для обновления UpdatePanel в javascript.Я просто хочу дождаться обновления панели обновления, а затем выполнить следующий код JavaScript.Как мне дождаться завершения асинхронного метода, прежде чем я продолжу выполнение (как в моем случае асинхронный метод __doPostBack)?Я хочу смоделировать что-то вроде того, как это происходит в C # с использованием метода Thread.Join ().

Ответы [ 2 ]

18 голосов
/ 13 сентября 2011

Использование Sys.WebForms.PageRequestManager endRequest событие:

<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 голосов
/ 10 августа 2015

Вот гораздо лучший способ, который позволяет вам что-то делать в случае успешного запроса и / или ошибки:

$.ajax({
        type: "POST",
        data: 
        {
            '__EVENTTARGET': '<%=YourButtonName.ClientID %>'
        }
    }).done(function (data) {
        alert("ok");
    }).fail(function (p1, p2, p3) {
        alert("error");
    });
...