2009-05-11 11 views
103

J'ai un code comme celui-ci,Modifier l'URL et redirigez en utilisant jQuery

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

et maintenant je veux rediriger comme ça,

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

Y at-il de toute façon dans jQuery pour résoudre ce problème? Il me laisse toujours avoir url = http://abc.com.

+0

Merci beaucoup à vous tous! Maintenant, je ne sais toujours pas quelle différence entre window.location et window.location.replace. Dans mon exemple, j'ai juste besoin de poster l'url sur ma page comme ça: http://abc.com/abc pour obtenir abc pour chercher dans ma base de données avec abc, c'est ce que l'utilisateur tape et appuyez sur Entrée ou sur le bouton, mais ils ont toujours retourner http://abc.com?name=abc donc je pense que je peux déclencher dans l'événement submit pour rediriger et changer mon URL à ce que je veux, mais ils ne font toujours rien. C'est tout, en passant merci encore! – gacon

+3

J'ai expliqué la différence entre window.location et window.location.replace ici: http://stackoverflow.com/questions/846954/change-url-and-redirect-in-jquery/847130#847130 –

Répondre

38

vous dire le vrai, je ne comprends toujours pas ce que vous avez besoin, mais

window.location(url); 

devrait être

window.location = url; 

une recherche sur window.location référence vous dira que.

16

jQuery n'a pas une option pour cela, il ne devrait pas en avoir un. Ce javascript est parfaitement valide et jQuery n'a aucune raison de fournir des fonctions wrapper pour cela. JQuery est juste une bibliothèque au-dessus de javascript, même si vous utilisez jQuery vous pouvez toujours utiliser le javascript normal.

BTW window.location est pas une fonction mais une propriété que vous devez définir comme ceci:

window.location = url; 
+0

down vote pour réclamer jQuery n'a pas de méthode pour cela (même si c'est excessivement inutile et ne devrait pas être recommandé) $ jq (window) .attr ("location", "http://yourdomain.com"); ou $ (location) .attr ('href', url); – rob

+6

Upvoted pour annuler cette downvote. La réponse de Pim peut facilement se lire comme "il n'y a pas de méthode spécifique dans jQuery pour cela". Downvote sur la sémantique lexicale est une mauvaise utilisation de ce privilège. –

297

Comme mentionné dans les autres réponses, vous n'avez pas besoin jQuery pour le faire; vous pouvez simplement utiliser les propriétés standard. Cependant, il semble que vous ne semblez pas connaître la différence entre window.location.replace(url) et window.location = url.

  1. window.location.replace(url) remplace l'emplacement actuel dans la barre d'adresse par un nouveau. La page qui appelait la fonction ne sera pas incluse dans l'historique du navigateur. Par conséquent, sur le nouvel emplacement, le fait de cliquer sur le bouton Précédent de votre navigateur vous permet de revenir à la page que vous visualisiez avant de consulter le document contenant le JavaScript de redirection.
  2. window.location = url redirige vers le nouvel emplacement. Sur cette nouvelle page, le bouton Précédent de votre navigateur pointe vers la page d'origine contenant le JavaScript de redirection.

Bien sûr, les deux ont leurs cas d'utilisation, mais il me semble que dans ce cas, vous devriez rester avec ce dernier.

PS: Vous avez probablement oublié deux barres obliques après http: sur la ligne 2 de votre JavaScript:

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

+1 pour l'explication de 'window.location.replace' –

+5

Mais pour être très correct, vous devez définir window.location.href au lieu de window.location. Alors que les deux fonctionnent de nos jours, ce dernier est un objet (et bien sûr non pris en charge pour assigner une chaîne dans une ancienne version d'IE ...) – Victor

+1

@Victor [la citation nécessaire] –

2

Essayez cette ...

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

Ce que cela signifie:

Trouver une forme avec id "abc", changez-le attribute nommé "action", puis soumettez-le ...

Cela fonctionne pour moi ... !!!

+0

Je vais l'essayer plus tard! – gacon

+0

lol, c'est un drôle de S! J'aime bien l'idée. Points pour être créatif! –

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

Try this ... utilisé comme une alternative

Questions connexes