Autor Zpráva
candiess
Profil
Zdravím vás všechny,
poslední dobou mě trápí sem tam věci okolo JS na jednom projektu.

Je nějaká teoretická situace, kdy má JS důvod se nevykonat na serveru ale na localhostu běží? Ono, titulek je nejspíš logicky špatně, protože localhost je vlastně server na lokálním PC, ale doufám, že chápete pointu.

Uvedu příklad: (JQuery)
Pomocí kliknutí na prvek se do adresy připíše hash a celá adresa se mi stáhne do inputu(hidden) a poté se mi odešle formulář.
Ovšem formulář se (ne)odešle, tedy podle mě ne, protože když dám na dané stránce F5, tak mě prohlížeč nevybízí na znovu-odeslání-dat tak jak je to typické. <- Toto mi dělá na serveru, kdežto na localhostu se vše vykoná jak má

Zkoušel sem debuggovat přes konzoli i přes var_dump($_REQUEST) ale nic, jakoby se inputy ani neodeslaly.

Setkal se někdo s něčím podobným? Vím, že JS je client-side, takže by server neměl mít vliv na jeho funkčnost, jsem z toho jelen..
_es
Profil
candiess:
Bez „živej“ ukážky ti asi nikto nevyveští v čom je problém.

poté se mi odešle formulář.
A formulár sa naozaj odošle, alebo sa neodošle a nastane nejaká JS náhrada odoslania formulára?
peta
Profil
"JS důvod se nevykonat na serveru"
Js se vykonava v prohlizeci uzivatele. Tudiz JS zavisi jen a pouze na tom, jaky www prohlizec mas. Se serverem nema js nic spolecne (az na vyjimecne pripady, spustis prohlizec na serveru, spustis na serveru program pro emulaci stranek - udelani screenshotu a pod).

"Pomocí kliknutí na prvek se do adresy připíše hash "
Adresa s hash (#) se neodesila na server. Hash je kotva na odskok ve strance.

"když dám na dané stránce F5, tak mě prohlížeč nevybízí na znovu-odeslání-dat tak jak je to typické"
Mozna proto, ze jsi pridal k adrese hash? (experimenty s hashem nedelam, tak nevim, jak se to chova s formularem)
Nebo nemas nastavene spravne ne-kesovani (html, php), coz je problem ajaxu v IE. Vetsinou staci pridat spravne meta tagy nebo header funkce a nebo se pouziva jeste 'adresa.php?'+Math.random() // nahodne cislo k adrese.

Takze me otazky jsou:
Pouzivas IE?
Jak poznas, ze se to neodesle? Pridas do kodu js alert, php echo + nahodne cislo a to cislo se nezobrazi nebo nezmeni? // a jo, var_dump($_REQUEST).
Zkousel jsi tedy tu stranku pro ajax pustit samostatne v prohlizeci? treba se nezobrazi stranka, protoze ji posilas spatne udaje.
Ukazka jednoduche testovaci stranky by byla?
candiess
Profil
_es:
Zkusím do odpoledne zpracovat živou ukázku.

peta:
Nene, vubec sme se nepochopili :) Vím že JS je client-side a se serverem nemá téměř nic společného a ne, neposílám formulář na stránku kde je hash.

Popíšu to takto:
Mám formulář, který se odesílá řekněme na index.php?modul=form a tento formulář odesílám přes JS (přesněji JQuery a jeho .submit()). Těsně před .submit() mám pár f-cí, jedna z nich mi dá do skrytého inputu hodnotu aktuální adresy (něco jako HTTP_REFEREER) a celý formulář se mi má odeslat. .submit() mě dostane na astránku, kde se mají data příjmat, jenže je absolutně bez dat (zjistil jsem přes $_REQUEST a přes případné F5, které má vybídnout k znovuposlání dat). Ovšem toto mi dělá na serveru, na localhostu mi vše funguje tak jak má. Počítám s tím, že tam bude nějaká úplně blbost ale asi z toho víc nevyčtete, pokud tady nebude ukázka.

Doufám, že už je téma jasnější :)


Živá ukázka: Tady
V horní liště klikněte na hlasování a poté uvidíte hodnocení podle hvězd.
Mám to uděláne přes JQUERY (soubor engine.js)


// engine.js řádek 15 - 30 cca
1. Po kliknutí na hvězdu se vezme její ID (id=1,id=2,..) a vloží se do skrytého inputu.
+ změní se hash stránky na ...cz/#show_item=rate
+ daná adresa se vloží do skrytého inputu
2. celý formulář se odešle

Opravdu nevím kde může být problém, jak říkám, wamp mi to vklidu sežere ale server ne a ne...
peta
Profil
Prvky A nemaji zadnou href adresu. Takze se muze po kliknuti na ne stat uplne cokoliv, treba presmerovat na tu samou stranku. Tim padem se uz nestihne provest form.submit nebo se provede oboji. A nebo se submit treba nedokonci.
Nejsem si ted jisty, jestli jquery vraci pro onclick na Acku false, aby zablokoval udalost kliknuti Pofidérní zakázání pravého tlačítka
Ja bych zkusil prvne vsechny ty acka zmenit na span, upravit js a pak se uvidi.
Vysvetlovalo by to, i proc ti to na local jede, kde nemusi cekat na odezvu serveru pri poslani submitem. Stihne to proste udelat submit driv.

Prvky A maji id nezacinaji pismenem. Coz podle w3c nemusi fungovat, ale asi to funguje.

V html kodu (www prohlizec FF pravym tlacitkem do stranky - zobrazit zdrojovy kod stranky) to vypisuje ve framu
<iframe src='http://nejwebik.cz/index.php?modul=jquery&task=comments&at1=view&at2=108' width='100%' height='200' frameborder=0>
Server Error!
</iframe>
candiess
Profil
peta:
V html kodu (www prohlizec FF pravym tlacitkem do stranky - zobrazit zdrojovy kod stranky) to vypisuje ve framu
TO je zase druhá věc, to jsou komentáře, nyní řeším hodnocení. Komentáře nejdou ze stejného důvodu jako to hodnocení.

kde nemusi cekat na odezvu serveru pri poslani submitem.
Nad tímhle jsem se nepozastavil, předběžně děkuji, předělám a přispěju novinkami. Předělám to do spanu.
candiess
Profil
Tak je to vyřešeno, předělal jsem to do spanu (zati děkuji), ale stejně to nefungovalo.

Problém byl zde:
$("#js_get_url").val(my_url);
$("#js_get_rate").val(stars);
$("#the_form").submit();
Nejspíš byla odezva opravdu větší, než jsem si myslel. Tudíž musím čekat až se vše provede:
$("#js_get_url").val(my_url);
$("#js_get_rate").val(stars);
var my_val = $("#js_get_url").val();
if(my_val) {
$("#the_form").submit();
}

peta:
Děkuji ti za navedení k vyřešení problému :)

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: