2009-08-04 8 views
12

Mam pozornie proste pytanie, ale nie mogę znaleźć odpowiedzi. Mam stronę internetową, która mogła wynikać z żądania POST i może mieć kotwicę (#) w adresie URL. Chcę ponownie załadować tę stronę jako żądanie GET w JavaScript. Jest więc podobny do this question, ale naprawdę chcę uniknąć POST, a nie tylko ostrzeżenia o tym.JavaScript, aby ponownie załadować stronę jako żądanie GET

Na przykład, jeśli strona powstała z żądania POST do "http://server/do/some?thing#", chcę ponownie załadować URL "http://server/do/some?thing" jako GET. Jeśli spróbuję wykonać próbę POST, to spowoduje to, że IE spróbuje wykonać test POST. Jeśli zamiast tego:

window.location = window.location.href; 

to nie robi nic, gdy URL ma kotwicę. Czy naprawdę muszę sam manipulować strunami, aby pozbyć się "#whatever" lub czy istnieje łatwiejszy, "lepszy" sposób na zrobienie tego?

+3

"właściwego" sposobu prawdopodobnie nie obejmuje odświeżania strony po stronie klienta. – Triptych

+0

Rzeczywiście, możesz podać nieco więcej kontekstu na temat problemu, abyśmy wiedzieli, że nie zamierzamy polecać ci zrobić czegoś głupiego. – Breton

+0

możliwy duplikat [Odśwież stronę za pomocą javascript i zmiennych GET] (http://stackoverflow.com/questions/17253754/refresh-the-page-with-javascript-and-get-variables) – Stephen

Odpowiedz

11

Najlepszym Mam wymyślić tak daleko jest:

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

Spróbuj wykonać następujące czynności:

location.replace(location.href) 
+0

To nie działało dla mnie w wersji Chrome 47.0.2526.111 (64-bit) – Jon

0

Można spróbować tej

location=location.href 
+0

Chociaż ten kod może odpowiedzieć na pytanie, podanie dodatkowego kontekstu dotyczącego tego, w jaki sposób i/lub dlaczego rozwiązuje problem, poprawiłoby długoterminową wartość odpowiedzi. – Badacadabra