naja... unbedingt eleganter ist es nicht... du kommst nicht direkt an die einzelnen Variablen ran, sondern nur an den query:
...wenn ich mich nicht irreCode:alert(window.location.search);
Gruss
Jan
Ahoi,
ich arbeite ja viel mit PHP und auch mit Sachen wie index.php?page=xyz. Da ich aber kaum mit JS arbeite, aber das bei meinem aktuellen Vorhaben doch gerne einbauen möchte, frage ich mcih nun, wie ich mit JS auf die GET-Variable zugreifen kann. Bisher habe ich das so gelöst, dass ich in den JS-Code ein PHP-echo eingebaut habe, aber da gibts sicher eleganteres Lösungen.
naja... unbedingt eleganter ist es nicht... du kommst nicht direkt an die einzelnen Variablen ran, sondern nur an den query:
...wenn ich mich nicht irreCode:alert(window.location.search);
Gruss
Jan
Mit location.seach kriegst du ein String. Wenn die URL so aussieht:
http://www.domain.com/datei.htm?a=3&b=6
liefert location.search folgenden String:
'?a=3&b=6'
...also inklusiv Fragezeichen. Du musst also mit String.substring() das erste Zeichen rausnehmen, also:
location.search.substring(1, location.search.length) == 'a=3&b=6';
Mit String.split() kannst du dann den String aufteilen, und zwar so:
v=location.search.substring(1, location.search.length).split('&');
Nun ist die Variable v ein Array mit folgenden Elementen:
v[0] == 'a=3'
v[1] == 'b=6'
Nun musst du diese Strings ebenfalls aufteilen und irgendwie den Wert speichern. Am besten machst du das in einem assoziativen Array und einer for/in-Schleife, etwa so:
Nun hat die Variable getVars folgende Elemente:Code:v=location.search.substring(1, location.search.length).split('&'); getVars = new Array(); for(var x in v){ var temp = x.split('='); getVars[temp[0]] = temp[1]; }
getVars['a'] == '3';
getVars['b'] == '6';
hm, danke für den nützlichen input. nun ich scheine an der sache was falsch zu machen...
ich habe mich selber mal versucht mit folgendem script
Code:<script language="javascript" type="text/javascript"> function promo_banner(){ v=location.search.substring(1, location.search.length).split('&'); getVars = new Array(); for(var x in v){ var temp = x.split('='); getVars[temp[0]] = temp[1]; } /*alert(getVars['id']);*/ if(getVars['id']=='30'){document.write('<div id="quickbanner_promo"><img src='bild.jpg'></div>');} } var a; a = promo_banner(); </script>
im übrigen komme ich auch ohne eine funktion zu verwenden nicht weiter...
liegt das allenfalls daran, dass ich nur eine Variable habe?
Die Lösung war dass es sich wohl nur um eine Variable gehandelt hat.
Ich habe den String nun folgendermassen abgefangen:
v=location.search.substring(1, location.search.length);
if(v=='id=30'){ [MEINE ACTION] }
und schaut her, schaut her, die sache funktioniert einwandfrei...![]()
Zitat von rewboss
Das klapp soweit wenn ich es direkt über die URL aufrufe.
rufe ich es aber über source auf
wird der Wert 123 nicht ausgelesen??Code:<script src="boxer.js?ppid=123" type="text/javascript"></script>
Bitte um HILFE
Ja, weil es sich hier um ein "Include" handelt und nicht um eine eigene Seite. Es passiert folgendermaßen:
1. Der User besucht eine Seite; etwa http://www.eineWebsite.de/index.html -- also ohne GET-Variablen. Das ist die Adresse, die dann in die Adresszeile im Browser angezeigt wird.
2. Innerhalb dieser Seite steht dein <script>-Tag. Der Browser sendet dann eine Anfrage für boxer.js zusammen mit der GET-Variable ppid=123.
Was passiert? Ändert sich die URL in der Addresszeile? Nein, denn es wird nicht zu einer neuen Seite gewechselt, sondern ein Dokument wird geholt und eingefügt -- und das ist was anderes.
3. Der Server enthält bekommt die Anfrage und die Variable. Er findet boxer.js und stellt fest, er muss nichts damit machen, außer an den Browser zu schicken. Die Variable ppid=123 braucht er dafür nicht: boxer.js ist kein serverseitiges Skript, das auf dem Server ausgeführt wird, sondern ein Dokument, das unverändert ausgegeben werden soll.
4. Der Browser enthält das Skript und fügt es ein. Was steht in der URL? Immer noch dasselbe: der Browser hat nicht seite gewechselt. Die Variable hat er brav an den Server geschickt, aber jetzt hat er sie nicht mehr.
5. Das Skript läuft auf dem Browser. Es liest die in der Adresszeile stehende URL aus, nämlich http://www.eineWebsite.de/index.html -- und findet kein ? und kein ppid=123.
Wenn boxer.js nun diese Variable braucht, dann musst du es so machen:
...dann klappt's.Code:<script type="text/javascript"> ppid=123; </script> <script type="text/javascript" src="boxer.js"></script>
@rewboss
Vielen Dank, auch für die klasse Erklärung.
Gruß Ingo
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)