2009-08-04 18 views
12

Tengo una pregunta aparentemente simple, pero no puedo encontrar la respuesta. Tengo una página web, que puede haber resultado de una solicitud POST y puede tener un ancla (#) en la URL. Quiero volver a cargar esta página como una solicitud GET en JavaScript. Por lo tanto, es similar al this question, pero en realidad quiero evitar el POST, no solo la advertencia al respecto.JavaScript para volver a cargar la página como solicitud GET

Así, por ejemplo, si la página resultó de una solicitud POST a "http://server/do/some?thing#" Quiero volver a cargar la URL "http://server/do/some?thing" como GET. Si intento

window.location.reload(true); 

que hace que IE intente una POST. Si en cambio lo hago:

window.location = window.location.href; 

esto no hace nada cuando la URL tiene un delimitador. ¿Realmente necesito hacer una manipulación de cuerdas para deshacerme del "# lo que sea" o hay una forma más fácil, "mejor" de hacer esto?

+3

La forma "correcta" probablemente implica no hacer una actualización de la página del lado del cliente. – Triptych

+0

De hecho, ¿puedes darnos un poco más de contexto sobre el problema para que sepamos que no vamos a recomendarte que hagas algo estúpido? – Breton

+0

posible duplicado de [Actualizar la página con las variables javascript y GET] (http://stackoverflow.com/questions/17253754/refresh-the-page-with-javascript-and-get-variables) – Stephen

Respuesta

11

El mejor que he encontrado hasta el momento es:

function reloadAsGet() 
{ 
    var loc = window.location; 
    window.location = loc.protocol + '//' + loc.host + loc.pathname + loc.search; 
} 
5

intente lo siguiente:

location.replace(location.href) 
+0

Esto no funcionó para mí en la versión 47.0.2526.111 de Chrome (64 bits) – Jon

0

Puede probar este

location=location.href 
+0

Si bien este código puede responder a la pregunta, proporcionar un contexto adicional sobre cómo y/o por qué resuelve el problema mejoraría el valor a largo plazo de la respuesta. – Badacadabra

Cuestiones relacionadas