2009-05-11 17 views
103

ho qualche codice come questo,Modifica URL e reindirizzare utilizzando jQuery

<form id="abc"> 
    <input type="text" id="txt" /> 
</form> 

e ora voglio reindirizzare come questo,

var temp = $("#txt").val(); 
url = "http:abc.com/" + temp; 
window.location.replace(url); 
or 
window.location(url); 

C'è comunque in jQuery per risolvere questo problema? Mi consente comunque di avere url = http://abc.com.

+0

Grazie sacco tutti voi! Ora ancora non so quale differenza tra window.location e window.location.replace. Nel mio esempio ho solo bisogno di postare url sulla mia pagina in questo modo: http://abc.com/abc per ottenere abc per cercare nel mio database con abc è quello che l'utente digita e premere invio o pulsante ma sempre ritorna http://abc.com?name=abc quindi penso di poter attivare l'evento submit per reindirizzare e cambiare il mio URL in quello che voglio ma non fanno ancora nulla. Questo è tutto, a proposito, grazie ancora! – gacon

+3

Ho spiegato la differenza tra window.location e window.location.replace qui: http://stackoverflow.com/questions/846954/change-url-and-redirect-in-jquery/847130#847130 –

risposta

38

vi dico il vero, io ancora non capisco che cosa avete bisogno, ma

window.location(url); 

dovrebbe essere

window.location = url; 

una ricerca su window.location di riferimento vi dirà che.

16

jQuery non ha un'opzione per questo, né dovrebbe averne uno. Questo javascript è perfettamente valido e non vi è alcun motivo per cui jQuery fornisca funzioni wrapper per questo.

jQuery è solo una libreria su javascript, anche se si utilizza jQuery è comunque possibile utilizzare il javascript normale.

Btw window.location non è una funzione, ma una proprietà che è necessario impostare in questo modo:

window.location = url; 
+0

down vote per rivendicare jQuery non ha un metodo per questo (anche se non è necessario eccessivo e non dovrebbe essere raccomandato) $ jq (finestra) .attr ("posizione", "http://tuodominio.com"); o $ (posizione) .attr ('href', url); – rob

+6

Venerato per annullare quella nota precedente. La risposta di Pim può facilmente leggere come "non esiste un metodo specifico in jQuery per questo". Il downvote sulla semantica lessicale è un abuso di quel privilegio. –

297

Come accennato nelle altre risposte, non occorre jQuery per fare questo; puoi semplicemente usare le proprietà standard.

Tuttavia, sembra che non sembri conoscere la differenza tra window.location.replace(url) e window.location = url.

  1. window.location.replace(url) sostituisce la posizione corrente nella barra degli indirizzi con una nuova. La pagina che stava chiamando la funzione, non sarà inclusa nella cronologia del browser. Pertanto, nella nuova posizione, facendo clic sul pulsante Indietro nel browser, si tornerà alla pagina che si stava visualizzando prima di visitare il documento contenente il reindirizzamento di JavaScript.
  2. window.location = url reindirizza alla nuova posizione. In questa nuova pagina, il pulsante Indietro nel browser punta alla pagina originale contenente il reindirizzamento di JavaScript.

Naturalmente, entrambi hanno i loro casi d'uso, ma a me sembra che in questo caso si debba restare con quest'ultimo.

PS: Probabilmente ha dimenticato due barre dopo http: sulla linea 2 della vostra JavaScript:

url = "http://abc.com/" + temp; 
+34

+1 per la spiegazione di 'window.location.replace' –

+5

Ma per essere molto corretti dovresti impostare window.location.href invece di window.location. Mentre entrambi funzionano al giorno d'oggi, quest'ultimo è un oggetto (e ovviamente non supportato per assegnare una stringa a un'antica versione di IE ...) – Victor

+1

@Victor [citazione necessaria] –

2

Prova questa ...

$("#abc").attr("action", "/yourapp/" + temp).submit(); 

Che cosa significa:

trovare una forma con id "abc", cambiare è attribute denominato "azione" e quindi inviarlo ...

Questo funziona per me ... !!!

+0

Lo proverò più tardi! – gacon

+0

lol, questo è un po 'divertente S! Mi piace l'idea però. Punti per essere creativi! –

5
var temp="/yourapp/"; 
$(location).attr('href','http://abcd.com'+temp); 

Prova questo ... utilizzato come alternativa

Problemi correlati