Wie benutze ich jquery um den Querystring zu manipulieren?

8

Ich habe ein Dropdown-Menü mit der Zuordnung von IDs zu Werten. Beim onChange-Ereignis möchte ich zur selben URL umleiten, aber mit 'id = value' an die Querystring angehängt.

Wie überprüfe ich, ob diese ID-Option nicht bereits in der Querystring (ich will nicht mehrere Werte) und Ersetzen / Append wie nötig.

Wie überprüfe ich, ob '?' ist bereits in der Querystring und an die URL anhängen, wenn es nicht ist.

Gibt es einen einfachen Weg mit jquery, um dies zu tun?

Es muss etwas ähnliches unter der Haube für $().ajax(url, {options}) Aufrufe tun. Ich hatte gehofft, ich könnte einfach $().redirect( url, { id : $(this).val() }) oder sowas machen.

Vielen Dank im Voraus.

Hinweis: Auf dieser Seite sind möglicherweise einige verschiedene Abfrageoptionen vorhanden (die Standardeinstellungen für andere Formularoptionen festlegen), sodass das Ersetzen der gesamten Abfragezeichenfolge keine Option ist.

%Vor%     
CoffeeMonster 12.01.2010, 23:08
quelle

6 Antworten

10

Ich habe mit einer RegExp-Übereinstimmung begonnen, um die Optionen zu überschreiben. jQuery.param nimmt einen Hash und serialisiert ihn in eine query_string aber es bietet nicht die Umkehrung (Zerlegung eines query_string).

%Vor%

Dann in der html

%Vor%

Danke an alle, die geantwortet haben.

    
CoffeeMonster 13.01.2010, 03:04
quelle
6

Die Einstellung window.location.search aktualisiert die Abfragezeichenfolge der URL (und überschreibt einen Wert, falls dieser bereits existiert)

%Vor%     
mr.moses 12.01.2010 23:18
quelle
6

Basierend auf der Antwort von CoffeeMonster:

Es gibt ein Problem, wenn location.href einen Hash-Teil enthält:

www.example.com#hash wird www.example.com#hash?id=whatever was dazu führt, dass ?id=whatever vom Server nicht interpretiert wird.

Es wurde behoben, indem der Hash-Teil der URL entfernt wurde: url.split("#")[0];

%Vor%

Jetzt www.example.com#hash wird www.example.com?id=whatever

    
Benkinass 02.11.2012 11:59
quelle
2

Das funktioniert wie ein Zauber:

%Vor%     
Jacob Relkin 12.01.2010 23:14
quelle
1

Versuchen Sie es mit der Split-Funktion:

%Vor%

split gibt eine Liste zurück, die aus der Zeichenfolge besteht, die durch die Zeichenkette geteilt wird (wie '?'), wobei diese Zeichenkette entfernt wurde.

    
Danny Roberts 12.01.2010 23:14
quelle
0

Ich vermute, dass die angebliche Lösung nicht mit bestimmten Variablennamen arbeitet. Vor allem die Linie:

%Vor%

Wenn key eine Zeichenfolge ist, die an anderer Stelle in der Querystring vorhanden ist, wird dieses Vorkommen irrtümlich ebenfalls ersetzt (versuchen Sie einen Buchstaben, z. B. "a"). Dies liegt daran, dass die Regex die String-Grenzen offen lässt (führende ';' und nachfolgende '=' sind beide optional). Vielleicht ist die Epxression besser etwas wie:

%Vor%

Obwohl ich es noch nicht getestet habe.

    
Grimace of Despair 25.02.2010 09:34
quelle

Tags und Links