¿Cómo recargo una página sin una advertencia POSTDATA en Javascript?
refresh reload (12)
No puedes actualizar sin la advertencia; la actualización indica al navegador que repita la última acción. Depende del navegador elegir si se debe advertir al usuario si repetir la última acción implica volver a enviar los datos.
Puede volver a navegar a la misma página con una nueva sesión haciendo:
window.location = window.location.href;
Quiero volver a cargar una página usando:
window.location.reload(true);
Pero recibo la advertencia POSTDATA porque la función de actualización desea volver a enviar los datos de formulario POST anteriores. ¿Cómo puedo actualizar mi página sin esta advertencia?
ACTUALIZADO: ¡No tengo control del proyecto! ¡No puedo solucionar el POST en sí!
Si se encuentra en la etapa en la que ha terminado con los datos de la publicación y simplemente desea volver a ver la página, puede usar una ventana. Ubicación e incluso agregar una cadena aleatoria como un parámetro de consulta para garantizar una nueva versión de la página.
Simplemente cambiar window.location
en JavaScript es peligroso porque el usuario aún puede presionar el botón Atrás y volver a enviar la publicación, lo que podría tener resultados inesperados (como una compra duplicada ). PRG es una solución mucho mejor
Use el patrón Post / Redirect / Get (PRG)
Para evitar este problema, muchas aplicaciones web utilizan el patrón PRG: en lugar de devolver una página HTML directamente, la operación POST devuelve un comando de redirección (utilizando el código de respuesta HTTP 303 (a veces 302) junto con el encabezado de respuesta HTTP "Ubicación"). indicando al navegador que cargue una página diferente usando una solicitud HTTP GET. La página de resultados se puede marcar o cargar de forma segura sin efectos secundarios inesperados.
hola si utiliza el método GET en lugar de POST, entonces no podemos la forma de los valores archivados. Si usa window.opener.location.href = window.opener.location.href; entonces podemos disparar el DB y podemos obtener el valor, pero lo único es que el JSP no es refrescante aunque el scriplet tenga los valores del formulario
Saludos Palani
¿qué hay de window.location.replace (window.location.href);
Para eludir la advertencia POST, debe volver a cargar la página con la URL completa. Funciona bien.
window.location.href = window.location.protocol +''//''+ window.location.host + window.location.pathname;
<html:form name="Form" type="abc" action="abc.do" method="get" onsubmit="return false;">
method="get"
- resuelve el problema.
if method="post"
, solo aparece la advertencia.
Puedes usar JavaScript:
window.location.assign(document.URL);
Funcionó para mí en Firefox y Chrome
mira este enlace: http://www.codeproject.com/Tips/433399/PRG-Pattern-Post-Redirect-Get
Tuve algunos problemas con ancla / hash-urls (incluyendo #) que no se recargaban con la solución de Rex ...
Así que finalmente terminé eliminando la parte hash:
window.location = window.location.href.split("#")[0];
La versión de Nikl no pasa los parámetros de consulta, utilicé la siguiente versión modificada:
window.location.href = window.location.protocol +''//''+ window.location.host + window.location.pathname + window.location.search;
o en mi caso, necesitaba actualizar el cuadro de la página superior, así que usé la siguiente versión
window.top.location.href = window.top.location.protocol +''//''+ window.top.location.host + window.top.location.pathname + window.top.location.search;
He escrito una función que volverá a cargar la página sin envío de publicaciones y también funcionará con hash.
Lo hago agregando / modificando un parámetro GET en la URL llamada reload
actualizando su valor con la marca de tiempo actual en ms.
var reload = function () {
var regex = new RegExp("([?;&])reload[^&;]*[;&]?");
var query = window.location.href.split(''#'')[0].replace(regex, "$1").replace(/&$/, '''');
window.location.href =
(window.location.href.indexOf(''?'') < 0 ? "?" : query + (query.slice(-1) != "?" ? "&" : ""))
+ "reload=" + new Date().getTime() + window.location.hash;
};
Tenga en cuenta que si desea activar esta función en un atributo href, impleméntelo de esta manera: href="javascript:reload();void 0;"
para que funcione, con éxito.
La desventaja de mi solución es que cambiará la URL, por lo que esta "recarga" no es una recarga real, sino que es una carga con una consulta diferente. Aún así, podría adaptarse a sus necesidades como lo hace para mí.
Esto funcionó
<button onclick="window.location.href=window.location.href; return false;">Continue</button>
La razón por la que no funcionó sin el
return false; es que anteriormente se trataba como un botón de envío de formulario. Con una devolución explícita falsa, no hace el envío de formulario y solo hace la recarga de la misma página que fue el resultado de un POST anterior a esa página.