2009-09-01 2 views
7

Wie parse ich URL-Parameter in JavaScript? (Dies sind die Parameter, die ich normalerweise GET-Parameter oder CGI-Parameter nennen würde, aber in diesem Fall sendet die Seite im Grunde an sich selbst, keinen Server, also gibt es keine GET-Anfrage und definitiv kein CGI-Programm.) Welche JavaScript-Bibliothek sollte ich zum Parsen von URL-Parametern verwenden?

I '

Ich habe eine Reihe von Routinen im Netz gesehen, die ich kopieren kann, aber ich habe keine Ahnung, wie robust sie sind. Ich bin an andere Sprachen wie Perl und Java gewöhnt, wo ich mich auf eine extrem gut getestete und robuste Bibliothek verlassen kann, von der ich weiß, dass sie mit Millionen kleiner Randfälle im Standard umgehen wird. Ich würde das Gleiche hier mögen, anstatt nur ein Beispiel zu schneiden und einzufügen.

+0

Wie viele „edge-Fälle“ erwarten Sie mit einfachen GET-Daten ?! –

+1

Josh - wie überspringen sagt, Millionen von kleinen. –

Antwort

1

Hier sind zwei einfache Funktionen, die die Arbeit machen: http://adamv.com/dev/javascript/querystring

Hier ist ein Beispiel der API-Referenz:

var qs = new Querystring(); 

// Parse a given querystring 
var qs2 = new Querystring("name1=value1&name2=value2"); 

var v1 = qs2.get("name1"); 
var v3 = qs2.get("name3", "default value"); 
+0

Danke. Das war leicht und minimal, aber immer noch vollbracht, was ich wollte: eine Bibliothek, anstatt Beispiele zu kopieren. Ich wollte JQuery benutzen, aber ich konnte heute nicht alles herausfinden, also muss ich auf ein anderes Mal warten. – skiphoppy

+0

Der Grund, warum ich diese anstelle von jQuery gepostet habe, ist, dass Sie kein ganzes Framework benötigen, um solche einfachen Aufgaben zu verwalten. –

+1

Ja, und heute war es schön, nicht auf das gesamte Framework angewiesen zu sein. – skiphoppy

7
+1

Ich wollte diese Route gehen, aber es war zu viel zu lernen und heute arbeiten. Es ist meine bevorzugte Antwort für jeden, der genug Kompetenz hat und mit dem Overhead des jQuery-Frameworks umgehen kann. – skiphoppy

+1

"jQuery URL Parser." Link ist kaputt. –

1

Wenn es „an sich selbst einreichen,“ tun Sie GET-Parameter tun müssen ?

Aber wenn Sie das tun, haben die meisten Browser jetzt die decodeURIComponent Funktion, die einzelne Parameter behandeln wird; Ihre Aufgabe ist es, sie auf & zu teilen (String#split wird das schön tun). Wenn Sie eine Bibliothek möchten, sind jQuery und Prototype beide gut verwendet und getestet.

1

Der beste Weg, den ich gefunden habe, ist, es einfach selbst zu tun und die Params in ein globales Schlüssel/Wert-Objekt zu trichterieren.

Erste quer params ist einfach ...

nehmen nur ein paar .split() 's

var myquery = thewholeurl.split("?")[1]; //will get the whole querystring with the ? 

dann können Sie eine

myparams = myquery.split tun (“ & „)

dann können Sie

tun
for each param in myparams 
{ 
temp = param.split("="); 

mykeys.push(temp[0]); 
myvalues.push(temp[1]); 

OR 

myObject[temp[0]] = temp[1]; 
} 

Es ist nur eine Frage des Stils.

Dies ist nicht der perfekte Code, nur pseudo Zeug, um Ihnen die Idee zu geben.

+0

Wenn Sie das tun, müssen Sie die Schlüssel und Werte über 'decodeURIComponent' ausführen. –

+0

Ups, ein Bug schon, weil man keine Bibliothek benutzt! :) – skiphoppy

-1

Javascript hat keine integrierte Unterstützung für URL-Parameter.

Wie auch immer, die location.search-Eigenschaft gibt den Teil der aktuellen Seiten-URL zurück, der mit dem Fragezeichen beginnt ('?').

Daraus können Sie Ihren eigenen Parameterparser schreiben oder Sie können einen der in den meisten gängigen JavaScript-Frameworks wie JQuery und ähnlichen verfügbaren verwenden.

0

Ich denke, diese Bibliothek würde ziemlich gut funktionieren, es ist unabhängig, so dass Sie es mit JQuery oder mit YAHOO oder Dojo verwenden können, ein weiterer Vorteil ist, dass es ziemlich gut dokumentiert ist.

http://www.openjsan.org/doc/t/th/theory/HTTP/Query/0.03/lib/HTTP/Query.html 

Sie können HTTP.Query verwenden, um in diesem Fall die gesamte Arbeit für Sie zu erledigen. Es ist nur wie 1.2 KB komprimiert, so dass Sie es sogar in eine größere Bibliothek aufnehmen können, wenn Sie das wollten.

1

Ich verwende die parseUri Bibliothek finden Sie hier: http://stevenlevithan.com/demo/parseuri/js/

Es Sie genau das tun können, was Sie fordern für:

var uri = 'http://google.com/?q=stackoverflow'; 
var q = uri.queryKey['q']; 
// q = 'stackoverflow' 

Ich habe es für eine Weile so weit und Hafen Ich hatte keine Probleme.

Verwandte Themen