2008-09-16 4 views
1

У меня есть сетка ExtJS на веб-странице, и я хотел бы сохранить часть информации о состоянии на сервере, когда пользователи покинут страницу. Могу ли я сделать это с помощью запроса Ajax onUnload? Если нет, то какое решение лучше?Как сохранить информацию о состоянии JavaScript на моем сервере onUnload?

ответ

2

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

0

Вы также можете установить cookie, используя javascript для разгрузки. Я думаю, что преимущество ajax в отношении файлов cookie заключается в том, что у вас есть данные, доступные вам для отчетности, и пользователь (при входе в систему) может использовать данные на разных компьютерах.

Недостаток использования ajax заключается в том, что он может замедлить фактическое закрытие окна браузера, что может раздражать, если сервер не реагирует.

0

Это зависит от того, как пользователь покидает страницу. Если в вашем графическом интерфейсе есть кнопка выхода, вы можете вызвать запрос ajax, когда пользователь нажимает на эту кнопку. В противном случае я не думаю, что это хорошая идея сделать запрос в onUnload. Как уже говорилось ранее, вам придется сделать синхронный запрос ... Альтернативой решению cookie будет скрытое текстовое поле. Это метод, обычно используемый такими инструментами, как RSH, которые занимаются проблемами истории, которые поставляются с ajax.

1

Существует ответ выше, который говорит, что используется синхронный вызов ajax, и это лучший сценарий. Проблема в том, что разгрузка не работает повсюду. Если вы посмотрите here, вы найдете некоторые трюки, которые помогут вам выгрузить события в сафари ... Вы также можете использовать Google Gears для сохранения пользовательской части контента в ситуациях, когда пользователь будет возвращаться, но единственный полностью безопасный способ сохранить эта информация должна постоянно отправлять его, пока пользователь находится на странице или вносит изменения.