Каков окончательный способ вызова функции jquery ajax перед выгрузкой окна?

Мне нужно вызвать функцию jquery ajax() перед выгрузкой окна. В моем случае это POST, и меня не волнует результат возврата, я просто хочу обновить базу данных.

Таким образом, кажется, что ответ заключается в том, чтобы связать функцию с событием выгрузки, т.е. использовать функцию jquery unload(), и эта функция выполняет вызов ajax. Кроме того, я знаю, что вы должны добавить синхронный параметр к вызову. Другими словами, добавьте async: false к вызову jquery ajax().

Однако я пробовал все это, и это не работает в IE8! Я тестировал его много раз, и он просто не будет работать в IE8. Отлично работает в Firefox и Chrome.

Еще более странно то, что после закрытия всего приложения IE8 кажется, что вызов проходит! Он кешируется?

Поэтому другие люди предлагают связать ajax перед выгрузкой с помощью jquery bind(). Однако, похоже, есть некоторые неоднозначные ответы на вопрос, будет ли это работать во всех браузерах.

Я еще не пробовал перед выгрузкой, так как это похоже на «взломанный» способ сделать это. Однако, если это работает, то мне все равно, пока это работает.


person Community    schedule 28.03.2011    source источник


Ответы (1)


Нельзя ли вызвать функцию в теге body страницы?

<body onbeforeunload="funcName(param)">

таким образом, каждый раз, когда страница выгружается, она вызывает вашу функцию, и вам не нужно беспокоиться о привязке.

person Loogawa    schedule 28.03.2011
comment
Хорошо, но это эквивалентно использованию jquery bind(beforeunload). Вот в чем проблема, должен ли вызов ajax быть привязан к выгрузке или перед выгрузкой? - person ; 28.03.2011
comment
О, я вижу. Я бы привязал его к beforeunload, потому что привязка его к unload вызывает ошибки в InternetExplorer и более старых браузерах, потому что он пытается работать одновременно с процессами закрытия браузеров. Лично я использую beforeunload каждый раз. - person Loogawa; 28.03.2011
comment
Звучит разумно. У вас есть ссылка, где документированы проблемы с выгрузкой для IE? - person ; 28.03.2011
comment
comment
Я не могу найти фактическую документацию, в которой говорится, что это не работает. И на большинстве сайтов Microsoft, которые я просматривал (например, msdn), моды говорят, что проблем нет, хотя все пользователи говорят, что они есть. Но я нашел много других веб-сайтов, в которых говорится, что у пользователей были проблемы с этим в IE. - person Loogawa; 28.03.2011
comment
Спасибо за попытку. Я проверю этот материал. - person ; 28.03.2011