Ich habe diese URL:
site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc
Was ich brauche, ist in der Lage zu sein, den URL-Parameterwert 'Zeilen' in etwas zu ändern, das ich spezifiziere, sagen wir 10. Und wenn die 'Zeilen' nicht existieren, muss ich sie am Ende der URL hinzufügen und die hinzufügen Wert, den ich bereits angegeben habe (10).
javascript
url
query-string
url-parameters
url-parsing
Sindre Sorhus
quelle
quelle
Antworten:
Ich habe Sujoys Code erweitert, um eine Funktion zu bilden.
Funktionsaufrufe:
Aktualisierte Version, die sich auch um die Anker in der URL kümmert.
quelle
http://www.domain.com/index.php?action=my_action&view-all=Yes
und ich muss den Wert "Alle anzeigen" ändern. Meine SO-Frage, die geschlossen wurde: stackoverflow.com/questions/13025880/…Ich denke du willst das Abfrage-Plugin .
Z.B:
Dies funktioniert unabhängig vom aktuellen Status der Zeilen.
quelle
window.location.pathname
.Um meine eigene Frage 4 Jahre später zu beantworten, nachdem ich viel gelernt habe. Insbesondere, dass Sie jQuery nicht für alles verwenden sollten. Ich habe ein einfaches Modul erstellt, das eine Abfragezeichenfolge analysieren / stringifizieren kann. Dies erleichtert das Ändern der Abfragezeichenfolge.
Sie können die Abfragezeichenfolge wie folgt verwenden:
quelle
Schnelle kleine Lösung in reinem js, keine Plugins erforderlich:
Nennen Sie es so:
Oder wenn Sie auf derselben Seite bleiben und mehrere Parameter ersetzen möchten:
bearbeiten, danke Luke: Um den Parameter vollständig zu entfernen, übergeben Sie
false
odernull
für den Wert :replaceQueryParam('rows', false, params)
. Da0
ist auch falsch , angeben'0'
.quelle
Ben Alman hat eine gute jquery Abfragezeichenfolgeflag / url Plugin hier , dass können Sie die Abfragezeichenfolgeflag leicht manipulieren.
Wie gewünscht -
Gehe in die Test - Seite hier
Geben Sie im Firebug Folgendes in die Konsole ein
jQuery.param.querystring(window.location.href, 'a=3&newValue=100');
Sie erhalten die folgende geänderte URL-Zeichenfolge zurück
Beachten Sie, dass sich der a-Querystring-Wert für a von X auf 3 geändert hat und der neue Wert hinzugefügt wurde.
Sie können dann die neue URL-Zeichenfolge verwenden, wie Sie möchten, z. B. document.location = newUrl oder einen Ankerlink usw. Ändern
quelle
TypeError: jQuery.param.querystring is not a function
jQuery.param.querystring
. Ich denke, sie haben die Bibliothek umgestaltet.Ein moderner Ansatz hierfür ist die Verwendung nativer standardbasierter URLSearchParams . Es wird von allen gängigen Browsern unterstützt, mit Ausnahme des IE, in dem Polyfills verfügbar sind
quelle
site.fwx%3Fposition=1&archiveid=5000&columns=5&rows=10&sorting=ModifiedTimeAsc
verwirrend aussieht , da es nicht das ist, was Sie erstellt hätten, wenn Sie es manuell ausgeführt hätten ...Sie können dies auch über normales JS tun
quelle
Dies ist die moderne Methode zum Ändern von URL-Parametern:
quelle
Wäre es eine praktikable Alternative zur String-Manipulation, ein HTML einzurichten
form
und nur den Wert desrows
Elements zu ändern ?Also,
html
damit ist so etwas wieMit dem folgenden JavaScript senden Sie das Formular
Wahrscheinlich nicht für alle Situationen geeignet, aber möglicherweise besser als das Parsen der URL-Zeichenfolge.
quelle
Sie können diese meiner Bibliothek verwenden, um die Arbeit zu erledigen: https://github.com/Mikhus/jsurl
quelle
2020 Lösung : Setzt die Variable oder entfernt sie, wenn Sie übergeben
null
oderundefined
auf den Wert.quelle
URLSearchParams
dies nicht in den neuesten Versionen aller gängigen Browser (2020) funktioniertIch habe eine kleine Hilfsfunktion geschrieben, die mit jeder Auswahl funktioniert. Sie müssen lediglich die Klasse "redirectOnChange" zu einem beliebigen Auswahlelement hinzufügen. Dadurch wird die Seite mit einem neuen / geänderten Querystring-Parameter neu geladen, der der ID und dem Wert der Auswahl entspricht, z.
Das obige Beispiel würde "? MyValue = 222" oder "? MyValue = 333" hinzufügen (oder "&" verwenden, wenn andere Parameter vorhanden sind) und die Seite neu laden.
jQuery:
quelle
Hier habe ich die Antwort von Adil Malik genommen und die 3 Probleme behoben, die ich damit identifiziert habe.
quelle
Hier ist was ich tue. Mit meiner Funktion editParams () können Sie beliebige Parameter hinzufügen, entfernen oder ändern und anschließend die URL mithilfe der integrierten Funktion replaceState () aktualisieren:
quelle
Meine Lösung:
Rufen Sie dann einfach "setParams" auf und übergeben Sie ein Objekt mit den Daten, die Sie festlegen möchten.
Beispiel:
In meinem Fall musste ich eine HTML-Auswahleingabe aktualisieren, wenn sie sich ändert, und wenn der Wert "0" ist, entfernen Sie den Parameter. Sie können die Funktion bearbeiten und den Parameter aus der URL entfernen, wenn der Objektschlüssel ebenfalls "null" ist.
Hoffe das hilft euch allen
quelle
Eine weitere Variation von Sujoys Antwort. Einfach die Variablennamen geändert und einen Namespace-Wrapper hinzugefügt:
Die Nutzung ist jetzt:
quelle
Ich habe auch eine Bibliothek zum Abrufen und Festlegen von URL-Abfrageparametern in JavaScript geschrieben .
Hier ist ein Beispiel für seine Verwendung.
Abrufen von Abfrageparametern als Objekt, nach Schlüssel oder Hinzufügen / Ändern / Entfernen.
quelle
Ich suchte das gleiche und fand: https://github.com/medialize/URI.js, was ganz nett ist :)
- Update
Ich habe ein besseres Paket gefunden: https://www.npmjs.org/package/qs Es behandelt auch Arrays in get params.
quelle
Ich weiß, dass dies eine alte Frage ist. Ich habe die obige Funktion erweitert, um Abfrageparameter hinzuzufügen oder zu aktualisieren. Immer noch nur eine reine JS-Lösung.
quelle
Meine Funktion unterstützt das Entfernen von Param
quelle
Ich habe gerade ein einfaches Modul geschrieben, um das Lesen und Aktualisieren der aktuellen URL-Abfrageparameter zu behandeln.
Anwendungsbeispiel:
Hier ist mein Code namens UrlParams. (Js / ts):
quelle
quelle