Ä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.


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;

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.


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;

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


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 ... !!!


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.