+ Antworten
Ergebnis 1 bis 9 von 9

Thema: Mit JS auf GET-Variablen zugreifen?

  1. #1
    TP-Supporter Driver ist auf einem guten Weg
    Registriert seit
    Feb 2005
    Beiträge
    365

    Mit JS auf GET-Variablen zugreifen?

    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.

  2. #2
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    naja... unbedingt eleganter ist es nicht... du kommst nicht direkt an die einzelnen Variablen ran, sondern nur an den query:
    Code:
    alert(window.location.search);
    ...wenn ich mich nicht irre

    Gruss
    Jan

  3. #3
    TP-Specialist rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE Avatar von rewboss
    Registriert seit
    Mar 2005
    Ort
    Unterfranken
    Beiträge
    2.639
    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:

    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];
    }
    Nun hat die Variable getVars folgende Elemente:

    getVars['a'] == '3';
    getVars['b'] == '6';

  4. #4
    TP-Junior longnose macht alles soweit korrekt
    Registriert seit
    May 2006
    Ort
    Frauenfeld
    Beiträge
    10
    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>

  5. #5
    TP-Junior longnose macht alles soweit korrekt
    Registriert seit
    May 2006
    Ort
    Frauenfeld
    Beiträge
    10
    im übrigen komme ich auch ohne eine funktion zu verwenden nicht weiter...

    liegt das allenfalls daran, dass ich nur eine Variable habe?

  6. #6
    TP-Junior longnose macht alles soweit korrekt
    Registriert seit
    May 2006
    Ort
    Frauenfeld
    Beiträge
    10
    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...

  7. #7
    TP-Newbie IG-FUN macht alles soweit korrekt
    Registriert seit
    Oct 2006
    Beiträge
    2
    Zitat Zitat von rewboss
    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:

    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];
    }
    Nun hat die Variable getVars folgende Elemente:

    getVars['a'] == '3';
    getVars['b'] == '6';

    Das klapp soweit wenn ich es direkt über die URL aufrufe.
    rufe ich es aber über source auf
    Code:
    <script src="boxer.js?ppid=123" type="text/javascript"></script>
    wird der Wert 123 nicht ausgelesen??

    Bitte um HILFE

  8. #8
    TP-Specialist rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE Avatar von rewboss
    Registriert seit
    Mar 2005
    Ort
    Unterfranken
    Beiträge
    2.639
    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:

    Code:
    <script type="text/javascript">
    ppid=123;
    </script>
    
    <script type="text/javascript" src="boxer.js"></script>
    ...dann klappt's.

  9. #9
    TP-Newbie IG-FUN macht alles soweit korrekt
    Registriert seit
    Oct 2006
    Beiträge
    2
    @rewboss
    Vielen Dank, auch für die klasse Erklärung.

    Gruß Ingo

+ Antworten

LinkBacks (?)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51