2011-01-12 14 views
9

Mam coś jak http://domain.com/Pages/SearchResults.aspx?function=search&selectedserver=intranet&search_query=MyRecords i trzeba go zastąpić JavaScript z czymś podobnym do http://domain.com/Pages/SearchResults.aspx?function=loginsearch&user=admin&password=admin&selectedserver=intranet&search_query=MyRecords - takjak zamienić część adresu URL na JavaScript?

function=search 

jest zastąpiony

function=loginsearch&user=admin&password=admin 

wewnątrz adresu URL. Potrzebujesz pomocy z tym, co JavaScript powinienem zapisać jako przycisk na pasku narzędzi przeglądarki, aby kliknąć i zmienić adres URL w pasku adresu.

+0

to błąd, już ustalone – user63503

+19

Proszę powiedzieć mi, że nie wysyłają nazwy użytkownika i hasła w postaci zwykłego tekstu. –

Odpowiedz

9
var url = window.location.toString(); 
window.location = url.replace(/function=search/, 'function=loginsearch&user=admin&password=admin'); 
+0

dodano przycisk o następującym kodzie: javascript: var url = window.location.toString(); window.location = url.replace (/ function = search /, 'function = loginsearch & user = admin & password = admin'); i zadziałało! Wielkie dzięki! – user63503

+0

Nie ma potrzeby "javascript:" przed kodem –

+0

@Juan: zależy od tego, czy jest w atrybucie 'onclick', czy nie. –

2
location.href = location.href.replace(
    'function=search&', 'function=loginsearch&user=admin&password=admin&') 
2

Jeśli chce to zrobić bez odświeżania strony, obawiam się, że to niemożliwe. Tag hasha można zmienić tylko za pomocą Javascript, tj. http://example.com/page/#hashtag, który można wykonać za pośrednictwem window.location.hash.

AKTUALIZACJA (11 września 2011 r.): Zobacz HTML5 history API.

0

Pomocne mogą być dedykowane biblioteki URI.js, w szczególności metody setQuery() i addQuery(). I wklejony ten fragment kodu bezpośrednio do konsoli na tej stronie i wydaje się działać:

var url = 'http://domain.com/Pages/SearchResults.aspx?function=search&selectedserver=intranet&search_query=MyRecords'; 
var uri = new URI(url); 
var new_params = {'function': 'loginsearch', 'user': 'admin', 'password': 'admin'}; 
uri.setSearch(new_params); 
console.log(uri.toString()); 

http://domain.com/Pages/SearchResults.aspx?function=loginsearch&selectedserver=intranet&search_query=MyRecords&user=admin&password=admin 
<- undefined 
> 

To powinno być łatwe, aby włączyć tę logikę do funkcji (lub jednego-liner :)). Na marginesie, dlaczego podajesz poświadczenia bezpośrednio w adresie URL?

0
var url    = window.location.href;    
window.location  = url.replace(/function=search/, 'function=loginsearch&user=admin&password=admin'); 
0

Jedynym sposobem, aby zaktualizować wyświetlany adres URL bez przeładowywania strony jest history.pushState

window.history.pushState("", "", "/your-new-url"); 
Powiązane problemy