Вызов jQuery-ajax: свойство async не работает? - PullRequest
0 голосов
/ 14 июня 2010

учитывая определенные обстоятельства, я вынужден сохранять настройки страницы (Javascript-значения) в сеансе, и это нужно сделать прямо перед тем, как покинуть страницу (я не могу использовать куки, так как «pageSettings» может стать довольно большой и localStorage еще не вариант;)). Вот так я и попробовал. Однако, кажется, что когда я снова вызываю страницу напрямую, вызов "http://blabla.com/bla" происходит асинхронно, даже если установлен атрибут async (я не получаю настройки предыдущего вызова, но одного раньше):

$jQ(document).ready(function () {
    $jQ(window).unload(Main.__setSessionValues);
});

var Main = {
    pageSettings: {},

    __setSessionValues: function __setSessionValues() {
        $jQ.ajax({
            type: "POST",
            async: false,
            url: "http://blabla.com/bla",
            data: {
                pageSettings: Object.toJSON(Main.pageSettings)
            }
        });
    }
};

Кто-нибудь знает, в чем может быть проблема?

спасибо заранее

1 Ответ

1 голос
/ 14 июня 2010

Код выглядит хорошо.Вы можете попробовать bind('beforeunload', ...) вместо unload, чтобы захватить вещи как можно раньше.Но, конечно, если что-то еще перехватит beforeunload и разгрузка будет отменена, ваш звонок будет сделан, даже если вы все еще на странице.

Немного не по теме, но если вы можетенайти другой способ сделать это, я бы.Выстрел синхронных вызовов ajax, когда пользователь пытается покинуть страницу, не идеален.

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