variablen aus url auslesen
alex
- javascript
guten morgen allerseits,
ich hab im vorfeld mal die archive durchwühlt, und hab auch ansatzweise lösungen gefunden die in die selbe richtung gehn, anscheinend sind meine javascript kenntnisse jedoch leider nicht ausreichend um selbst auf die lösung zu kommen.
zum problem:
ein mapserver generiert mir ein bild (kartenausschnitt). von diesem bild sollen nun bei jedem klick in das bild die x und y koorinaten (siehe url) in ein array (bzw. arrayX und arrayY ?) gespeichert werden.
wie kann ich aus einer url ( sieht nach einem klick ins bild z.b. so aus--> http://devel.grid-it.at/alex/index_html?x=292&y=197) vorhin angesprochene koordinaten per javascript weiterverarbeiten?
das bild wurde von mir im vorfeld über ein <form> </form> ins html eingebunden.
vielen dank schon mal für eure bemühungen,
alex
Hallo alex,
du benötigst
http://de.selfhtml.org/javascript/objekte/location.htm#search
um an die Parameter zu kommen,
http://de.selfhtml.org/javascript/objekte/string.htm#substring
um das ? zu entfernen,
http://de.selfhtml.org/javascript/objekte/string.htm#substring
um den Rest erst beim & und danach beim = zu trennen.
Gruß, Jürgen
du benötigst
http://de.selfhtml.org/javascript/objekte/location.htm#search
um an die Parameter zu kommen,
als ich hab jetzt sämtlichen inhalt nach dem ? übernommen und mal in eine variable geschrieben
http://de.selfhtml.org/javascript/objekte/string.htm#substring
um das ? zu entfernen,
mein problem hierbei ist daß ich verschiedene "zehner-stelligkeiten" bei den koordinatenpaaren habe (bsp.:x=3/y=345, x=143/y=2, x=1023/y=34 usw.).
daraus resultierend weiß ich jetzt nicht wie ich die zeichenkette automatisch immer passend aufsplitten kann....wäre es möglich einfach zwischen dem "x" und dem "&" das "=" zu streichen und die resttliche kette zu übernehmen ( und für y wert halt einfach alles nach dem 2. "=")? ----> ?x=258&y=201
Hi,
daraus resultierend weiß ich jetzt nicht wie ich die zeichenkette automatisch immer passend aufsplitten kann...
replace() von ",", split() am " ", split() am "/", split() am "=", ...
Gruß, Cybaer
replace() von ",", split() am " ", split() am "/", split() am "=",
naja, daß ich kein programmier-experte bin solltest ja schon gemerkt haben, ich werd mich da mal reinhängen...mal sehn was dabei rauskommt - ansonsten muss ich halt leider nochmal lästig sein - danke für deine hilfe
alex
Hi,
replace() von ",", split() am " ", split() am "/", split() am "=",
naja, daß ich kein programmier-experte bin solltest ja schon gemerkt haben, ich werd mich da mal reinhängen...
Quickbar->JavaScript->split()
Und das einfach solange, bis alles zerbröselt ist. ;-)
Und das ggf. in einer Schleife, deren Ende man für jeweilige Array mittels length abfragen kann (der letzte existente Array-Eintrag ist halt length-1).
mal sehn was dabei rauskommt - ansonsten muss ich halt leider nochmal lästig sein
Kein Problem. =:-)
Gruß, Cybaer
Hi,
replace() von ",", split() am " ", split() am "/", split() am "=",
habs jetzt mal so probiert:
:::::::::::::::
<script language="javascript">
function koord() {
var extrakt = (window.location.search);
var extrakt2 = extrakt.split("&");
var x1 = extrakt2[0];
var y1 = extrakt2[1];
var x1_1 = x1.split("=");
var xlast=x1_1[1];
var y1_1 =y1.split("=");
var ylast=y1_1[1];
document.write(ylast); <br>
document.write(ylast);
}
</script>
::::::::::::::
warum gibt er mir keine x/y werte aus sobald ich das 2. document.write anhänge? wenn ich document.write(ylast) weglasse funktioniert das wunderbar
danke, alex
Hi,
ich habe es nicht getestet, aber ...
document.write(ylast); <br>
... <br> ist HTML, kein JavaScript. Du darfst das aber auch gerne mit write() ausgeben. =;-)
Gruß, Cybaer
Hi,
ich habe es nicht getestet, aber ...
document.write(ylast); <br>
... <br> ist HTML, kein JavaScript. Du darfst das aber auch gerne mit write() ausgeben. =;-)
hab auch vorher schon versucht das JS nach dem ersten document.write zu schließen, danach das break zu setzen, dannn wieder js auf und das 2. document.write abzusetzen...fehlanzeige.
wie macht man das im js teil, wenn man 2 ausgaben untereinander haben will...also quasi html <br> bzw. <p> ?
...bin auch grad auf document.writeln gestossen...aber den zeilenumbruch macht er mir da auch nicht
thx, alex
Hi,
wie macht man das im js teil, wenn man 2 ausgaben untereinander haben will...also quasi html <br> bzw. <p> ?
write(xlast+"<br"+ylast);
oder
write(xlast);
write("<br>");
write(ylast);
Wobei letzteres auf dem Opera überdurchschnittlich länger dauert.
...bin auch grad auf document.writeln gestossen...aber den zeilenumbruch macht er mir da auch nicht
Doch, den sieht man in HTML nur i.d.R. nicht. Man kann ihn innerhalb von <pre></pre> begutachten.
Gruß, Cybaer
write(xlast);
write("<br>");
write(ylast);
habs dann auch bemerkt dass mir im js vor dem html tag die "" fehlen, danke für den hinweis
unter http://fluid.devcon.cc/grid/test.htm sieht man jetzt mal was bisher da ist - jetzt muß ich das ganze halt noch irgendwie hinkriegen daß bei jedem klick die x/y koordinaten in ein array (oder was anderes?) gehn und dann per submit verschickt werden.
mein problem hierbei ist daß ich verschiedene "zehner-stelligkeiten" bei den koordinatenpaaren habe (bsp.:x=3/y=345, x=143/y=2, x=1023/y=34 usw.).
daraus resultierend weiß ich jetzt nicht wie ich die zeichenkette automatisch immer passend aufsplitten kann....wäre es möglich einfach zwischen dem "x" und dem "&" das "=" zu streichen und die resttliche kette zu übernehmen ( und für y wert halt einfach alles nach dem 2. "=")? ----> ?x=258&y=201
z.b. so:
<script type="text/javascript">
var pairs = unescape( window.location.search.substring(1) ).split('&');
var params = new Object();
for(var param in pairs)
{
var tmp = pairs[param].split('=');
params[tmp[0]] = tmp[1];
}
for(var name in params)
{
alert( name + '=' + params[name]);
}
</script>
Struppi.
z.b. so:
<script type="text/javascript">
var pairs = unescape( window.location.search.substring(1) ).split('&');
var params = new Object();for(var param in pairs)
{
var tmp = pairs[param].split('=');
params[tmp[0]] = tmp[1];
}for(var name in params)
{
alert( name + '=' + params[name]);
}
</script>
> Struppi.
ich glaub ich brauch noch ein wenig bis ich da durchsteig...aber danke auf jeden fall
Naja, ist eigtnlich ganz simpel.
var pairs = unescape( window.location.search.substring(1) ).split('&');
Du musst sowas von innen nach außen lesen:
window.location.search ist klar
window.location.search.substring(1) schneidet das erste Zeichen (das Fragezeichen) ab
unescape( .... )
unescape()
(Mittlerweile besser decodeURI() verwenden)
unescape().split('&')
Nachdem ale Zeichen umgewandelt sind kannst du den search String splitten. Jetzt hast du ein Array mit z.b. solchen Werten 'x=der Wert x', 'y=der Wert y', ....
var params = new Object();
dieses Object nimmt die Parameter auf, du kannst der Variabel params jetzt Attribute zuweisen.
z.b.
params.eineEigenschaft = 1;
oder
params['eineEigenschaft'] = 1;
Ausgabe in beiden Fällen: alert(params.eineEigenschaft);
for(var param in pairs)
{
Das ist Faulheit und kann auch so umgesetzt werden:
for(var param = 0; param < pairs.length; param++)
(Wobei man dann üblicherweise statt param z.b. i verwenden würde)
var tmp = pairs[param].split('=');
hier werden die Werte des Array gesplittet.
tmp[0] enthält die Variabel
tmp[1] den Wert
params[tmp[0]] = tmp[1];
jetzt hast du z.b.
params.x = 'der Wert x'
params.y = 'der Wert y'
}
for(var name in params)
{
alert( name + '=' + params[name]);
}
Mit dieser Schleife kannst du alle empfangenen Werte ausgeben.
Mehr Hinweise dazu
http://de.selfhtml.org/javascript/objekte/array.htm#assoziative_arrays
Struppi.
Hi,
unescape().split('&')
Umgekehrt. Erst splitten, dann die Kodierung aufheben.
bla=x%26co%3Ddummy&blubb=sabbel
ergibt nach Deiner Methode
bla=x
co=dummy
blubb=sabbel
müßte aber
bla=x&co=dummy
blubb=sabbel
ergeben.
Nachdem ale Zeichen umgewandelt sind kannst du den search String splitten.
Nein, es muß erst gesplittet werden, dann umgewandelt.
Das gilt sowohl für das & als auch für das =.
Andernfalls würden codierte Trennzeichen beim Splitten verwendet.
cu,
Andreas
Nein, es muß erst gesplittet werden, dann umgewandelt.
Das gilt sowohl für das & als auch für das =.Andernfalls würden codierte Trennzeichen beim Splitten verwendet.
Wenn man nicht alles überprüft - müssen es andere amchen ;-)
<script type="text/javascript">
var pairs = window.location.search.substring(1).split('&');
var params = new Object();
for(var param in pairs)
{
var tmp = unescape( pairs[param] ).split('=');
params[tmp[0]] = tmp[1];
}
for(var name in params)
{
alert( name + '=' + params[name]);
}
</script>
Struppi.
hallo,
was hältsts du/ihr von dieser variante? --> http://fluid.devcon.cc/grid/test.htm
alex
Hallo Alex,
wie kann ich aus einer url ( sieht nach einem klick ins bild z.b. so aus--> http://devel.grid-it.at/alex/index_html?x=292&y=197) vorhin angesprochene koordinaten per javascript weiterverarbeiten?
In dem Du die URI durchsuchst mit search()
Das liefert Dir alles ab dem ? (sprich: Fragezeichen) in Deiner URI. Nun musst Du nur noch X und Y, also die Variablen, rauslöse aus dem String. Auf die Schnelle würde ich am & split'en und mit substr die Parameter raus lösen.
Mit freundlichem Gruß
Micha
hallo,
danke erstmal für die rasche hilfe...werd mal sehn ob ich das hinbekomm.
gruß, alex