2014-01-09 2 views
2

Я пытаюсь удалить часть своего URL-адреса в адресной строке браузера через javascript.Как удалить часть URL-адреса в адресной строке браузера

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

Как я могу это сделать?

URL у меня есть: http://localhost:8090/Home/Index?x=72482&success=itsdone

URL Я хочу это:

http://localhost:8888/Home/Index?x=72482 

вот мой Javascript код:

window.location.href.replace('&', '#'); 
window.location.hash = ""; 
+1

Ваш вопрос не кажется последовательным. Вы хотите изменить & на # или удалить «& success = itsdone»? –

+0

@dystroy: я хочу удалить «& success = itsdone», в моем коде я попытался заменить '&' на '#' и установить hase на ничего ... это способ, которым я пытаюсь ... но да, я хочу удалить это – user2232273

ответ

9

replace не меняет строку, на которую вы называете его (строки неизменяемы), он возвращает новый.

Для замены & с #, сделать

window.location = window.location.href.replace('&', '#'); 

Если вы хотите, чтобы удалить все с первого &, лучше всего использовать регулярное выражение:

window.location = window.location.replace(/&.*$/,''); 

Если то, что вы хотите, для сохранения параметра x, вы должны перестроить местоположение, чтобы убедиться, что оно все еще ОК, если параметры находятся в другом порядке по URL-адресу:

window.location = window.location.replace(/([^?]*).*(\?|&)(x=)([^&]+).*/, "$1?$3$4") 

Это изменяет

"http://localhost:8888/Home/Index?a=2&x=72482&c=3" 

или

"http://localhost:8888/Home/Index?x=72482&success=itsdone" 

в

"http://localhost:8888/Home/Index?x=72482" 
+0

вы полные права .. большое спасибо .. теперь я понимаю, что было не так все время. – user2232273

+0

Имейте в виду, что большинство браузеров будут выполнять перезагрузку страницы при изменении URL-адреса! – ToBe

+0

@ToBe "most"? Я думаю, что это необходимое поведение, если вы не просто измените хэш. –

0

window.location приведет к перезагрузке страницы. изменить порт тоже использовать этот

window.location = window.location.protocol 
       + "//" 
       + window.location.host 
       + ":8888/" 
       + window.location.pathname 
       + window.location.search.substr(0, window.location.search.indexOf('&')-1) 
+0

Я не заметил изменения порта в вопросе. Я полагаю, что это опечатка (но я не уверен). –

0

Есть ли конкретная причина, почему вы передаете IsDone в качестве параметра QueryString, если вы даже не нужно? Разве не легче было бы даже передать его, чтобы начать с того, чтобы страница решила, что вы закончили?

Смежные вопросы