JSON-запрос отменяется при переходе на следующую страницу - PullRequest
0 голосов
/ 22 октября 2009

Я использую json, чтобы получить список информации о пользователе, отображаемой в верхней части страницы, с помощью jquery в приложении asp.net (C #).

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

Когда выполняется запрос json и когда я перехожу на следующую страницу, запрос json отменяется / останавливается, что хорошо видно при использовании firebug в mozilla.

Как сохранить вызов json, пока он не получит ответ?

Ответы [ 2 ]

1 голос
/ 22 октября 2009

Исходя из обильных комментариев, которые я видел, я бы предложил один из следующих:

Вариант 1 :

  • На главной странице сразу вызовите функцию, которая запрашивает информацию в вызове json. Это означает, что всякий раз, когда страница изменяется, она запрашивает новую информацию.
  • Сохраняйте интервал 15 минут на случай, если пользователь будет сидеть на одной странице в течение 15 минут.

Вариант 2 :

Используйте частичные обновления AJAX для обновления только основного содержимого страницы. Если браузер не запрашивает новые страницы целиком, код на главной странице фактически никогда не обновляется. Звучит так, как будто вы ожидали, что сайт будет вести себя, но для того, чтобы это произошло, потребовалось немало доработок.

Объяснение

Я думаю, что главное недоразумение здесь в том, что происходит, когда пользователь переходит на новую страницу.

Возможно, вы слышали раньше, что сеть не имеет статуса. Это означает, что когда вы находитесь на веб-странице и переходите на новую страницу, все содержимое страницы, на которой вы находитесь, отбрасывается, и сервер передает вам совершенно новую страницу - сверху вниз. Ни один из HTML на исходной странице не сохраняется.

Использование главных страниц ничего не меняет. Главные страницы на самом деле просто используются в качестве оберток на стороне сервера, так что он знает, как включить верхний и нижний колонтитулы в каждую страницу, которую вы отправляете обратно. Вы по-прежнему будете отправлять обратно совершенно новую страницу.

Для вашего примера это означает, что отмена запроса json - единственная разумная вещь для браузера. Вы сделали запрос AJAX на некоторую информацию, и пока он ожидает ответа, пользователь перешел на новую страницу. Браузер знает, что сервер доставит совершенно новую страницу с совершенно новым html, поэтому он выбрасывает текущую страницу. Div, который должен был быть обновлен буквально, больше не существует.

0 голосов
/ 22 октября 2009

Хранение запроса AJAX для страницы, которая больше не открыта, не имеет смысла, поскольку обработчику ответа некуда отображать результаты.

Создайте заголовок, который включен на каждой странице. Когда страница загружена, в заголовке должны отображаться текущие значения. Запустите новый AJAX-запрос при открытии новой страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...