Autor Zpráva
vacjos
Profil *
Ahoj,
nemohl by mi někdo poradit, jak získat proměnné v javascriptu z url jinak než pomocí:

Příklad url: http://www.web.cz/index.php?x=1&y=2&z=3

var pole; var httpGetVars; var x; var y; var z;
function get() {
pole = window.location.search.substr(1).split('&');
httpGetVars = new Array();
for (i = 0; i < pole.length; i++) {httpGetVars[pole[i].split('=')[0]] = unescape(pole[i].split('=')[1]);}
x = httpGetVars['x'];
y = httpGetVars['y'];
z = httpGetVars['z'];
}
get();


Na této funkci mi vadí to, že v ní musím vypisovat všechny názvy proměnných. Chtěl bych tuto funkci nějak zuniverzálnit, např. podobně jak to používám v php přes funkci:

<?php
if (isset($_GET)) {
reset ($_GET);
while (list ($key, $val) = each ($_GET)) {$$key = $val;}
}
?>

Tato funkce sama vytvoří jednotlivé proměnné a naplní je jejich hodnotami, přitom dopředu nemusím žádnou z proměnných deklarovat, tj. mám
url 1: http://www.web.cz/index.php?x=1&y=2&z=3 tak mi to vytvoří $x=1; $y=2; $z=3;
url 2: http://www.web.cz/index.php?a=0&y=1&c=2&d=3 tak mi to vytvoří $a=0; $b=1; $c=2; $d=3;
...

Jde to nějak podobně zapsat i v javascriptu?
vacjos
Profil *
Tak už jsem si to našel sám:

var queryStringList = {};
function get() {
var url = window.location.toString();
url.match(/\?(.+)$/);
var params = RegExp.$1;
var params = params.split('&');
for (var i = 0; i < params.length; i++) {
var tmp = params[i].split('=');
queryStringList[tmp[0]] = unescape(tmp[1]);
}
for(var i in queryStringList) {window[i] = queryStringList[i];}
}
get();

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: