136 votes

Changement d'URL et redirection à l'aide de jQuery

J'ai un code comme celui-ci,

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

et maintenant je veux rediriger comme ceci,

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

Existe-t-il un moyen de résoudre ce problème dans jQuery ? Il me permet toujours d'avoir url = http://example.com .

0 votes

Merci à vous tous ! Maintenant, je ne sais toujours pas quelle est la différence entre window.location et window.location.replace. Dans mon exemple, j'ai juste besoin d'afficher l'URL de ma page comme ça : abc.com/abc pour obtenir abc pour rechercher dans ma base de données avec abc est ce que l'utilisateur tape dans mettre et appuyer sur entrée ou bouton mais ils retournent toujours 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, au fait, merci encore !

3 votes

J'ai expliqué la différence entre window.location et window.location.replace ici : stackoverflow.com/questions/846954/

347voto

Mathias Bynens Points 41065

Comme mentionné dans les autres réponses, vous n'avez pas besoin de jQuery pour faire cela ; vous pouvez simplement utiliser les propriétés standard.

Cependant, il semble que vous ne connaissez pas la différence entre window.location.replace(url) y window.location = url .

  1. window.location.replace(url) remplace l'emplacement actuel dans la barre d'adresse par un nouvel emplacement. La page qui appelait la fonction, ne sera pas incluse dans l'historique du navigateur. Par conséquent, sur le nouvel emplacement, un clic sur le bouton "retour" de votre navigateur vous ramènera à la page que vous visualisiez avant de visiter le document contenant le JavaScript de redirection.
  2. window.location = url redirige vers le nouvel emplacement. Sur cette nouvelle page, le bouton retour de votre navigateur pointera vers la page d'origine contenant le JavaScript de redirection.

Bien sûr, les deux ont leur utilité, mais il me semble que dans ce cas, vous devriez vous en tenir à la seconde.

P.S. : Vous avez probablement oublié deux barres obliques après http: à la ligne 2 de votre JavaScript :

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

5 votes

Mais pour être tout à fait correct, vous devez définir window.location.href au lieu de window.location. Bien que les deux fonctionnent de nos jours, le dernier est un objet (et bien sûr, il n'est pas possible d'y affecter une chaîne de caractères dans une ancienne version d'IE...).

1 votes

Victor Il n'y a pas de liste des anciennes versions d'IE où cela se produit. Le commentaire de @bobince est correct : stackoverflow.com/a/10016109/96656#comment18225061_10016109

0 votes

Moins 1. Pas assez de jQuery

47voto

balexandre Points 36115

Pour te dire la vérité, je ne comprends toujours pas ce dont tu as besoin, mais

window.location(url);

devrait être

window.location = url;

une recherche sur emplacement de la fenêtre référence vous le dira.

18voto

Pim Jager Points 20018

JQuery n'a pas d'option pour cela, et ne devrait pas en avoir. Il s'agit d'un javascript parfaitement valide et il n'y a aucune raison pour que jQuery fournisse des fonctions d'enveloppe 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 n'est pas une fonction mais une propriété que vous devez définir comme ceci :

window.location = url;

0 votes

Vote négatif pour affirmer que jQuery n'a pas de méthode pour cela (même si c'est une surcharge inutile et que cela ne devrait pas être recommandé) $jq(window).attr("location"," votredomaine.com" ) ; ou $(location).attr('href',url) ;

9 votes

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

0 votes

Upvoted parce que vous savez... c'est vrai "il n'y a pas de méthode spécifique dans jQuery pour cela", pourquoi voudriez-vous avoir une solution aussi laide que : $jq(window).attr("location", "yourdomain.com") ; quand vous pouvez avoir quelque chose comme window.location = url ;

14voto

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

Essayez ceci... utilisé comme alternative

3voto

amouat Points 21

Essayez ceci...

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

Ce que cela signifie :

Trouver un formulaire avec id "abc", changez-le en attribute nommé "action" et ensuite le soumettre...

Cela fonctionne pour moi... ! !!

1 votes

Lol, c'est un drôle de S ! Mais j'aime l'idée. Des points pour être créatif !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X