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

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

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

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

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

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

3
user680696 28 Мар 2011 в 21:52

1 ответ

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

<body onbeforeunload="funcName(param)">

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

0
Loogawa 28 Мар 2011 в 21:58
1
Хорошо, но это просто эквивалентно использованию jquery bind("beforeunload" ). Вот в чем проблема, должен ли вызов ajax быть привязан к выгрузке или перед выгрузкой?
 – 
user680696
28 Мар 2011 в 22:00
О, я вижу. Я бы привязал его к beforeunload, потому что привязка его к unload вызывает ошибки в InternetExplorer и более старых браузерах, потому что он пытается работать одновременно с процессами закрытия браузеров. Лично я использую beforeunload каждый раз.
 – 
Loogawa
28 Мар 2011 в 22:06
Звучит разумно. У вас есть ссылка, где документированы проблемы с выгрузкой для IE?
 – 
user680696
28 Мар 2011 в 22:09
 – 
Loogawa
28 Мар 2011 в 22:17
Я не могу найти фактическую документацию, в которой говорится, что это не работает. И на большинстве сайтов Microsoft, которые я просматривал (например, msdn), моды говорят, что проблем нет, хотя все пользователи говорят, что они есть. Но я нашел много других веб-сайтов, в которых говорится, что у пользователей были проблемы с этим в IE.
 – 
Loogawa
28 Мар 2011 в 22:18