2012-03-07 3 views
0

У меня есть форма, которая использует $ .ajax для отправки для вызова сценария bash, который записывает данные в текстовый файл.POST не заполняется, если я обновляю страницу

В Firefox, если я немедленно обновить страницу или перейти на другую страницу, то POST прерывается, и текстовый файл не обновляется:

[15: 07: 12,781] POST http://server/writegit.cgi [неопределенные 891ms ]

Если я ждать второй или два перед обновлением, то POST завершается, и все прекрасно:

[15: 03: 04,995] POST http://server/writegit.cgi [HTTP/1.1 200 OK 2022ms]

Однако эта проблема не возникает в Chrome - после отправки формы POST завершается, даже если я немедленно обновляю страницу.

Есть ли способ заставить Firefox вести себя как Chrome?

+1

Любопытно, почему кто-то захочет этого. – zerkms

+1

хотите что именно? – Jeff

+0

измените страницу сразу после того, как действие выполнено и до того, как подтверждение вернется. – zerkms

ответ

4

Ajax-вызовы асинхронны - это означает, что они срабатывают, а когда-нибудь в будущем придет ответ. Код не ждет ответа. Если вы перейдете от страницы до того, как это произойдет, вы вытащите ковер из-под запроса.

Либо сделать синхронный вызов, либо добавить обработчик события «onbeforeunload», чтобы проверить, завершился ли ваш вызов ajax, прежде чем разрешить пользователю перемещаться от страницы.

или: просто не обновляйте страницу!

+0

добавил async: «false» в запрос $ .ajax, но проблема не устранена ... любые идеи? – Jeff

+0

ах, сейчас работает ... Мне пришлось отбросить цитаты. Браузер блокируется на секунду в Firefox (а не в Chrome), но не имеет большого значения. Благодаря! – Jeff

+0

window.onbeforeunload = function() {return confirm ("Вы еще сохранили данные havent!")} –

Смежные вопросы