Как заблокировать событие выгрузки страницы для асинхронного вызова JSON? - PullRequest
0 голосов
/ 24 августа 2010

Я пытаюсь заблокировать событие unload для страницы, пока не получу ответ от сервера на асинхронный вызов json, инициированный клиентом.

Чтобы прояснить ситуацию, сценарий следующий: мне нужно сохранить изменения пользователя в базе данных, когда они закрывают браузер. При этом я покажу маленькую div и скрою ее, когда мы закончим (скрытие не имеет значения, страница уже исчезнет!)

В коде это в значительной степени то, что я пытаюсь сделать. PS: я не хочу использовать alert()

 <code> 
  window.onbeforeunload = function () {<br>
        var requestURL = "../foo/Save";
        $("#dvMsg").show();<br>
        $.getJSON(
            requestURL,
            {
                changeId: 1,
                userId: 1
            },
                function (data) { 
                    // hide the dvMsg 
                    $("#dvMsg").show();
                    // page should be safe to unload
                });<br>
        };

Проблема заключается в характере асинхронного вызова, то есть он не будет блокироваться, и страница будет выгружена до того, как мы получим ответ.

Есть идеи?

Спасибо!

1 Ответ

1 голос
/ 24 августа 2010

Я не думаю, что это вообще можно сделать, если событие асинхронное.

Почему бы не сделать это синхронно? Это, вероятно, ваш лучший шанс, чтобы пройти через это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...