Autor | Zpráva | ||
---|---|---|---|
Lee Profil * |
Ahoj,
prosím o radu, pokud bude někdo vědět. Mám následující kod $('#help_item').attr("value",'0'); arr = $(tform).serializeArray() for each (var item in arr) { $.ajax({ type: "POST", url: "./accept.php", data: "jquery_item_name=" + item['name'] + "&jquery_item_value=" + item['value'], success: function(data){ $('#help_item').attr("value",'1'); var s = $('#help_item').attr("value"); alert(s); } }); } alert($('#help_item').attr("value")); A jde o to, ze na konci pak testuji hodnotu vlozenou do #help_item a vzdy je 0 i kdyz mezitim nekolikrat projde nastaveni na 1. A je to proto, ze z nejakeho duvodu se posledni alert udela driv nez jakykoli vnitrni ve funkci success. Poradi alert dialogu je tedy - prvni vzdy ten, co ma byt az na konci a pak jsou ty vnitrni. Vi nekdo proc to tak je? Diky. Moderátor Chamurappi: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ). Moderátor Chamurappi: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
|
||
Chamurappi Profil |
#2 · Zasláno: 27. 5. 2010, 15:38:31
Reaguji na Lee:
„vzdy je 0 i kdyz mezitim nekolikrat projde nastaveni na 1“ Neprojde. Nastavení na 1 projde, až se stáhnou data ze serveru. Požadavek je zpracován asynchronně (proto tam také je ta callback funkce v parametru success ).
Mimochodem, proč necháváš tolikrát vyhledat v dokumentu ten samý element? $ je docela složitá funkce, ne asociativní pole, do kterého si můžeš snadno a rychle hrábnout.
Druhé mimochodem: „for each (var item in arr)“ 1) Tohle ti těžko pojede ve všech prohlížečích. 2) Takhle se pole neprochází. |
||
Lee Profil * |
#3 · Zasláno: 27. 5. 2010, 15:45:30
Jde mi o validaci dat. V cyklu se kontroluje validace kazde polozky (tento kod jsem zjednodusil jen pro demonstraci problemu) a potrebuji kontrolovat navratove hodnoty, pokud jedna z nich neprojde, pak nakonci kodu cela funkce vrati false a formular se neodesle. Chtel jsem to udelat pomoci globalni promenne, v teto success funkci to nefunguje, takze ukladam data do promenne v html, kterou pak muzu nakonci vyhodnotit.
For each nefunguje ve vsech prohlizecich? Aha, to jsem nevedel. Jakym tedy lepsim zpusobem projit pole, ktere ma promenne neciselne indexy? Dekuji |
||
Chamurappi Profil |
#4 · Zasláno: 27. 5. 2010, 16:25:15 · Upravil/a: Chamurappi
Reaguji na Lee:
„potrebuji kontrolovat navratove hodnoty, pokud jedna z nich neprojde, pak nakonci kodu cela funkce vrati false a formular se neodesle“ Budeš muset pozměnit logiku svého skriptu, protože validační funkce skončí (a vlastně i musí skončit) dřív, než se ze serveru dozvíš, jak jsou data vyhodnocená. To první „A“ ve zkratce AJAX znamená asynchronní — požadavek se vyšle a skript jede dál. „Jakym tedy lepsim zpusobem projit pole, ktere ma promenne neciselne indexy?“ V JavaScriptu neexistují pole, která mají nečíselné indexy. Existují objekty a jejich členové se procházejí smyčkou for..in (bez each ). Metoda serializeArray z jQuery vrací normální pole, takže použij klasickou smyčku for .
|
||
Lee Profil * |
#5 · Zasláno: 28. 5. 2010, 08:31:49
Budeš muset pozměnit logiku svého skriptu, protože validační funkce skončí (a vlastně i musí skončit) dřív, než se ze serveru dozvíš, jak jsou data vyhodnocená. To první „A“ ve zkratce AJAX znamená asynchronní — požadavek se vyšle a skript jede dál.
-- Aha, to jsem nevedel, ok, predelam to tedy bez ajaxu V JavaScriptu neexistují pole, která mají nečíselné indexy. Existují objekty a jejich členové se procházejí smyčkou for..in (bez each). Metoda serializeArray z jQuery vrací normální pole, takže použij klasickou smyčku for -- Zase jsem o neco chytrejsi, usetril jsi mi hodne pozdejsich problemu, diky moc ! |
||
Časová prodleva: 14 let
|
0