Gibt es eine Möglichkeit, die Abfrageparameter für eine GET-Anforderung in JavaScript zu erstellen ?
Genau wie in Python urllib.urlencode()
, das ein Wörterbuch (oder eine Liste von zwei Tupeln) aufnimmt und eine Zeichenfolge wie erstellt 'var1=value1&var2=value2'
.
javascript
url
urlencode
cnu
quelle
quelle
for
Verwenden Sie beim Iterieren mit hasOwnProperty , um die Interoperabilität sicherzustellen.URLSearchParams unterstützt zunehmend Browser.
Node.js bietet das Querystring- Modul an.
quelle
searchParams.append(otherData)
funktional
quelle
var data = { bloop1: true, bloop2: "something" }; var url = "https://something.com/?"; var params = encodeData(data); var finalUrl = url + params; // Is this the right use?
Sollte produzierenhttps://www.something.com/?bloop1=true&bloop2=something
?Zabba hat in einem Kommentar zur aktuell akzeptierten Antwort einen Vorschlag gemacht, der für mich die beste Lösung ist: Verwenden Sie jQuery.param () .
Wenn ich
jQuery.param()
die Daten in der ursprünglichen Frage verwende, lautet der Code einfach:Die Variable
params
wird seinKompliziertere Beispiele, Ein- und Ausgaben finden Sie in der Dokumentation zu jQuery.param () .
quelle
Wir haben gerade arg.js veröffentlicht , ein Projekt, das darauf abzielt, dieses Problem ein für alle Mal zu lösen. Es war traditionell so schwierig, aber jetzt können Sie Folgendes tun:
Und das Lesen funktioniert:
oder das ganze Los bekommen:
und wenn Sie sich für den Unterschied zwischen
?query=true
und interessieren#hash=true
, können Sie die MethodenArg.query()
undArg.hash()
verwenden.quelle
Dies sollte den Job machen:
Beispiel:
Ergebnis:
quelle
encodeURIComponent()
anstelle von verwendenencodeURI
. Lesen Sie über den Unterschied .ES2017 (ES8)
Verwenden von
Object.entries()
, wodurch ein Array von Objektpaaren zurückgegeben[key, value]
wird. Zum Beispiel{a: 1, b: 2}
würde es zurückkehren[['a', 1], ['b', 2]]
. Es wird nicht nur vom IE unterstützt (und wird es auch nicht sein).Code:
Beispiel:
Ergebnis:
quelle
Wenn Sie Prototype verwenden, gibt es Form.serialize
Wenn Sie jQuery verwenden, gibt es Ajax / serialize
Ich kenne zwar keine unabhängigen Funktionen, um dies zu erreichen, aber eine Google-Suche hat einige vielversprechende Optionen ergeben, wenn Sie derzeit keine Bibliothek verwenden. Wenn Sie nicht sind, sollten Sie wirklich, weil sie der Himmel sind.
quelle
Ich möchte diese fast 10 Jahre alte Frage noch einmal aufgreifen. In dieser Ära der Standardprogrammierung ist es am besten, Ihr Projekt mit einem Abhängigkeitsmanager (
npm
) einzurichten . Es gibt eine ganze Heimindustrie von Bibliotheken, die Abfragezeichenfolgen codieren und sich um alle Randfälle kümmern. Dies ist einer der beliebtesten -https://www.npmjs.com/package/query-string
quelle
Eine kleine Änderung am Typoskript:
quelle
Dieser Thread verweist auf Code zum Escapen von URLs in PHP. Es gibt
escape()
undunescape()
welche werden den größten Teil der Arbeit erledigen, aber Sie müssen ein paar zusätzliche Dinge hinzufügen.quelle