Перезагрузка страницы через javascript: избегайте предупреждения «Обратная передача» - PullRequest
4 голосов
/ 08 сентября 2010

Я запускаю перезагрузку страницы через javascript, используя следующее:

window.location.reload(true);

Однако в некоторых случаях (из предыдущей обратной передачи) браузер выдает мне следующее предупреждение: «Чтобы снова отобразить веб-страницу, веб-браузер должен повторно отправить ранее отправленную информацию ...».

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

Ответы [ 6 ]

6 голосов
/ 16 августа 2012

, если вы хотите обновить страницу, не включая данные публикации, а не просто выполнить обратную передачу, попробуйте

window.location = window.location.href;
2 голосов
/ 08 сентября 2010

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

Кстати, для чего нужна перезагрузка?Если это для отправки информации POST снова, я предлагаю вам вручную отправить данные через ajax или скрытую форму, используя javascript.

2 голосов
/ 08 сентября 2010

Запрос, который вы пытаетесь сделать снова, - это запрос POST, отсюда и предупреждение.Вы можете убедиться, что вы только перезагружаете ресурсы, извлеченные с помощью GET запросов, или - альтернативно - отправляете скрытый <form> с помощью метода POST (и таким образом имитируете перезагрузку, гарантированно не кэшируемую).

Как вы, наверное, уже знаете, предупреждение связано с идемпотентностью (отсутствием побочных эффектов) в глаголах HTTP.GET (среди прочих) считаются (должны, по крайней мере) идемпотентными, тогда как запросы POST допускают изменения на сервере.Поэтому клиент должен предложить пользователю подтвердить, что он / она намеревается выполнить действие снова.

1 голос
/ 08 сентября 2010

Единственный способ - помешать повторному размещению параметров. использование window.location = window.location

0 голосов
/ 18 июля 2014

После:

mysql_query("insert into table (id_item, quantity, cost) values($m, '$amount', '$cost')");

Положите:

header("Location: index.php");

Затем перезагрузите страницу с помощью jquery, и вы не получите "... веб-браузер должен повторно отправить информацию... "предупреждение.

0 голосов
/ 22 сентября 2010

Один из способов сохранения данных о состоянии на странице - с помощью идентификаторов фрагментов в URL, например.# filter1, # filter2, а затем использовать удобный плагин hashchange для jQuery для выполнения кода (т. е. перезагрузить соответствующую часть страницы с новыми результатами), когда фрагмент URL изменяется с помощью события onhashchange.Это также хорошо, потому что различные состояния могут быть добавлены в закладки и кэшированы.

http://benalman.com/projects/jquery-hashchange-plugin/

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