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
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 *
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
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 *
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 !

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:

0