Autor Zpráva
Majkelju
Profil
Zdravím, v JS načítám do modálního okna soubor a potřebuju mu předat nějaké parametry...Mám to takto a nějak to nefunguje:
"./safe/kalkulace_graf2.php?index=" + index + "&k_polozka=" + k_polozka
Proměnné index a k_polozka mám předem uložené stylem var k_polozka = <?echo $k_polozka;?>
Může mi někdo poradit?
Chamurappi
Profil
Reaguji na Majkelju:
Parametry bys měl prohánět funkcí encodeURIComponent, jinak ti budou zlobit, pokud v nich bude třeba ampersand nebo mřížka (a spolehlivé nebudou ani znaky s diakritikou).

mám předem uložené stylem
A co v nich je? Čísla? Jestli něco jiného, tak by to také mělo být zapsané odpovídajícím způsobem (v případě řetězce s uvozovkami apod.).

v JS načítám do modálního okna
Tím myslíš skutečně modální okno, nebo jen nějaký napozicovaný <div>?
Majkelju
Profil
Chamurappi:
Zkoušel jsem fci urlencode(), ale s tou to nefungovalo už vůbec... použil jsem to jako:
$cesta = urlencode("./safe/kalkulace_graf1.php?k_polozka=".$k_polozka."&index=".$index);
A pak načetl do příkazu:
swfobject.embedSWF("./open-flash-chart.swf", "my_chart", "440", "200", "9.0.0", "expressInstall.swf", {"data-file":<?echo $cesta;?>} );

V proměnných jsou pouze čísla, okno by mělo být skutečně modální, i když v pojmech se občas ztrácím, prostě pomocí jQuery mi po kliknutí vyskočí to pěkné nastylované okno, ve kterém dělám toto :)
Chamurappi
Profil
Reaguji na Majkelju:
V proměnných jsou pouze čísla
Tak ta žádné ošetření nepotřebují.

prostě pomocí jQuery mi po kliknutí vyskočí to pěkné nastylované okno
To není modální okno. Pod modálním oknem si představuji skutečné okno a ne nějakou <div>nost uvězněnou uvnitř prohlížeče. JavaScript umí v některých prohlížečích otevřít opravdové modální okno.
Majkelju
Profil
Chamurappi:
Aha, ono s ním lze hýbat, má ovládací prvky a všechno, tak jsem to tak pochopil... No každopádně zkouším tu funkci a pořád to nejede...mohl by jsi mi sem uvést příklad, jak se to používá? Do JS se snažím proniknout už nějaký ten pátek, ale pořád mi přijde, že mi unikají základy :/
peta
Profil
Majkelju:
"V proměnných jsou pouze čísla". To neni tak zcela pravda. Cesta je take promenna a je to string.

<?php
$cesta = urlencode("./safe/kalkulace_graf1.php?k_polozka=".$k_polozka."&index=".$index);
echo $cesta; // co to vypise? A urcite musis cestu encodovat? protoze si myslim, ze tu cestu nebudes posilat do url, ale predavat javascript funkci jako string. encoduji se jen promenne url, tj $k_polozka
?>
<script>
swfobject.embedSWF("./open-flash-chart.swf", "my_chart", "440", "200", "9.0.0", "expressInstall.swf", {"data-file":<?echo $cesta;?>} );
</script>

{"data-file":<?echo $cesta;?>} - to neni javascriptovy zapis asociativniho pole, podivej se do zdrojoveho kodu stranky (www prohlizec FF - prave tlacitko v obrazovce - zobrazit zdrojovy kod). Minimalne by museli byt kolem stringu apostrofy.

Zkousel jsi tu js funkci seskladat bez php? Pokud ti ta funkce nebude fungovat bez php, tak s php uz vubec.
Pokud jsi nejsi jisty, co v php pises a co pak vyleze v html kodu, tak si prohlizej zdrojovy kod stranky.
Pokud si nejsi jisty, ze vlozene <?echo $cesta;?> udela, co ma, pak do echa zahrn cely radek i s swfobject.embedSWF.

Takze bych to videl asi takto:
$cesta = sprintf("./safe/kalkulace_graf1.php?k_polozka=%s&index=%s", urlencode($k_polozka), urlencode($index)); // a nebo zadne url encode, pokud tyto dve promenne jsou jen cisla
echo sprintf('swfobject.embedSWF("./open-flash-chart.swf", "my_chart", "440", "200", "9.0.0", "expressInstall.swf", {"data-file":"%s"});', $cesta);
Majkelju
Profil
Problém vyřešen, ukázalo se, že je nutné v JS použít fci encodeURIComponent, pomocí encodeURI ani PHPčkového urlencode to nefungovalo.
Chamurappi
Profil
Reaguji na Majkelju:
To se ukázalo už v příspěvku [#2].
Ovšem se samotnými čísly ta funkce opravdu nic neudělá.
Majkelju
Profil
Chamurappi:
Ano, tu fci jsem zkoušel už předtím, ale asi jsem měl něco jiného špatně, proto to nefungovalo.

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: