Dojo addOnUnload и xhrGet - PullRequest
       26

Dojo addOnUnload и xhrGet

1 голос
/ 06 июля 2011

У меня есть функция для разблокировки наборов данных через API

function unlockData() {

    var xhrArgs = {
        url: "/api/unlockData",
        handleAs: "json",
        content: {
            account_id: accountId
          },
        load: function(data) {
            if(data) {
                alert("Data unlocked");
            } else {
                alert("Something went wrong.");
            }

        },
        error: function(error) {
           alert("error:"+error);
        }
    }

    var deferred = dojo.xhrGet(xhrArgs);

}

который называется onUnload

dojo.addOnUnload(window, "unlockData");

При перезагрузке, это я получаю это сообщение об ошибке:

Error: Unable to load /api/unlockData?account_id=981782 status:0

Можно ли вообще запустить запрос xhrGet при выгрузке? Кстати, функция работает нормально, если не вызывается при выгрузке.

1 Ответ

0 голосов
/ 06 июля 2011

Поскольку вызовы Xhr асинхронны , выполнение этого вызова во время «разгрузки» всегда будет неудачным, поскольку браузер больше не находится на этой странице.

В любом случае, поскольку addOnUnloadсрабатывание во время window.onbeforeunload, вы можете поставить цикл «таймер», чтобы проверить, успешен ли вызов AJAX.

Я настоятельно не рекомендую эту практику.Использование вызова AJAX во время закрытия «окна» совершенно не нужно, вам следует рассмотреть возможность использования формы и вызова своих сценариев синхронно

...