Ändern Sie die URL und leiten Sie sie mit jQuery um

132

Ich habe einen Code wie diesen,

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

und jetzt möchte ich so umleiten,

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

Gibt es in jQuery überhaupt eine Lösung? Es lässt mich immer noch haben url = http://example.com.

Gacon
quelle
Vielen Dank euch allen! Jetzt weiß ich immer noch nicht, welchen Unterschied zwischen window.location und window.location.replace gibt. In meinem Beispiel muss ich nur eine URL auf meiner Seite wie folgt posten : abc.com/abc , damit abc mit abc in meiner Datenbank sucht, gibt der Benutzer put ein und drückt die Eingabetaste oder die Taste, aber er gibt immer abc.com zurück ? name = abc, also denke ich, dass ich im Submit-Ereignis auslösen kann, um meine URL umzuleiten und auf das zu ändern, was ich will, aber sie tun immer noch nichts. Das ist übrigens alles nochmals vielen Dank!
Gacon
3
Ich habe den Unterschied zwischen window.location und window.location.replace hier erklärt: stackoverflow.com/questions/846954/…
Mathias Bynens

Antworten:

343

Wie in den anderen Antworten erwähnt, benötigen Sie dazu nicht jQuery. Sie können einfach die Standardeigenschaften verwenden.

Es scheint jedoch, dass Sie den Unterschied zwischen window.location.replace(url)und nicht kennen window.location = url.

  1. window.location.replace(url)Ersetzt den aktuellen Speicherort in der Adressleiste durch einen neuen. Die Seite, die die Funktion aufgerufen hat, wird nicht in den Browserverlauf aufgenommen. Wenn Sie am neuen Speicherort in Ihrem Browser auf die Schaltfläche "Zurück" klicken, kehren Sie zu der Seite zurück, die Sie angezeigt haben, bevor Sie das Dokument mit dem umleitenden JavaScript besucht haben.
  2. window.location = urlleitet zum neuen Speicherort weiter. Auf dieser neuen Seite verweist die Schaltfläche "Zurück" in Ihrem Browser auf die Originalseite mit dem umleitenden JavaScript.

Natürlich haben beide ihre Anwendungsfälle, aber in diesem Fall sollten Sie sich an letzteres halten.

PS: Sie haben wahrscheinlich zwei Schrägstriche nach http:Zeile 2 Ihres JavaScript vergessen :

url = "http://abc.com/" + temp;
Mathias Bynens
quelle
5
Um jedoch sehr korrekt zu sein, sollten Sie window.location.href anstelle von window.location festlegen. Während beide heutzutage arbeiten, ist letzteres ein Objekt (und natürlich nicht unterstützt, um eine Zeichenfolge in einer alten IE-Version zuzuweisen ...)
Victor
1
@ Victor [Zitat benötigt]
Mathias Bynens
1
@ Victor Das listet keine alte IE-Version auf, in der dies einbricht. @ Bobince's Kommentar ist korrekt: stackoverflow.com/a/10016109/96656#comment18225061_10016109
Mathias Bynens
Minus 1. Nicht genug jQuery
VarunAgw
41

Sag dir das Wahre, ich verstehe immer noch nicht, was du brauchst, aber

window.location(url);

sollte sein

window.location = url;

Eine Suche in der window.location- Referenz sagt Ihnen das.

Balexandre
quelle
18

jQuery hat keine Option dafür und sollte auch keine haben. Dies ist ein absolut gültiges Javascript, und es gibt keinen Grund für jQuery, Wrapper-Funktionen dafür bereitzustellen.

jQuery ist nur eine Bibliothek über Javascript. Selbst wenn Sie jQuery verwenden, können Sie normales Javascript verwenden.

Btw window.location ist keine Funktion, sondern eine Eigenschaft, die Sie wie folgt festlegen sollten:

window.location = url;
Pim Jäger
quelle
Die Abstimmung für die Inanspruchnahme von jQuery hat keine Methode dafür (obwohl dies ein unnötiger Overkill ist und nicht empfohlen werden sollte) $ jq (window) .attr ("location", " yourdomain.com" ); oder $ (Speicherort) .attr ('href', url);
Rob
9
Upvoted, um diese Downvote rückgängig zu machen. Pims Antwort kann leicht lauten: "Dafür gibt es in jQuery keine spezielle Methode." Eine Ablehnung der lexikalischen Semantik ist ein Missbrauch dieses Privilegs.
Nigel Angel
Upvoted, weil Sie wissen ... es ist richtig "es gibt keine spezifische Methode in jQuery dafür.", Warum möchten Sie eine so hässliche Lösung haben wie: $ jq (window) .attr ("location", "yourdomain". com "); wenn Sie so etwas wie window.location = url haben können;
Rodolfo Abarca
11
var temp="/yourapp/";
$(location).attr('href','http://abcd.com'+temp);

Versuchen Sie dies ... als Alternative verwendet


quelle
3

Versuche dies...

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

Was es bedeutet:

Suchen Sie ein Formular mit id"abc", ändern Sie den attributeNamen "action" und senden Sie es dann ...

Das funktioniert bei mir ... !!!

amouat
quelle
1
lol, das ist ein lustiges S! Ich mag die Idee aber. Punkte für Kreativität!
Eric Bishard
-2

Sie können es einfacher machen, ohne jquery

location = "https://example.com/" + txt.value

Kamil Kiełczewski
quelle
Es funktioniert nicht und ich kann nicht sehen, wie es könnte. Standort ist kein globaler. window.location ist. bearbeiten: Ja verifiziert. Es funktioniert nicht, zumindest nicht in Chrom. Erwägen Sie, Ihr Beispiel auf window.location zu aktualisieren
Shayne
Seltsam - in meinem Chrome, Firefox, Safari funktioniert es - der Speicherort ist globales Eigentum - z. B. wenn ich die Chrome-Konsole eingebe: location = 'https://google.com'dann wechselt es die Seite - probieren Sie andere Browser an?
Kamil Kiełczewski
@Shayne beim Tippen thisund this.locationin der Konsole - was sehen Sie?
Kamil Kiełczewski
this.location funktioniert nur, wenn sich "this" auf das Fenster bezieht. Was selten der Fall sein wird. Explizit ist immer besser als Implizit, besonders wenn Sie nicht überrascht sein möchten, wenn Ihr Code nicht portabel oder wiederverwendbar ist
Shayne
Ja, Sie haben Recht - aber ich frage mich: Warum thisverweisen Sie in Ihrem Browser nicht auf ein windowObjekt (und das obige Snippet funktioniert nicht)? (im globalen Kontext des Browsers sollte es auf Windows- Objekt gesetzt sein )
Kamil Kiełczewski