Autor | Zpráva | ||
---|---|---|---|
Fibi Profil * |
#1 · Zasláno: 25. 9. 2012, 16:18:10
Ahoj
v JS nemám moc zkušeností a snažím se zprovoznit JS kontrolu formuláře v okamžiku odeslání. Moje teze je taková že při odesílání formuláře se pomocí onsubmit zavolá funkce data z formuláře vezme a pomocí ajaxu je pošle ke kontrole na server. Vrací true / false aby se formulář odeslal / neodeslal. (+ ta funkce označuje chybné položky atd.) A můj problém je, že call back funkce v jquery metodě post mi nenastaví promněnou na true/false kterou pak vracím. Snad pomůže ukázka : //var navrat = 'nic'; //pokus o definice promnene uplne globalne, taky bylo k nicemu function rezervace_kontrola(formular) { var navrat;//definuji promnenou navrat ve funkci, tedy ji maji udajne videt i funkce uvnitr dataString = $(formular).serialize(); $.post("http://"+window.location.hostname+"/pro_ajax.php?co=2", dataString, function(vystup) { if (vystup == 'true') { navrat = 'true' ;//a tohle nemaka } else { //zaroven kontroluji jestli jsem dostal opravdu JSON format var vystup_json = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(vystup.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + vystup + ')'); $.each(vystup_json, function(key, value) { $('label[for="'+key+'"]').addClass('chyba');//tyady barvim chybna pole na cerveno }); navrat = 'false' ;//a tohle nemaka }; }); alert(navrat); return false ; };//rezervace_kontrola Tedy promnena navrat by mela mit bud hodnotu false, nebo true, ale má stále hodnotu 'nic'. Už fakt nevím proč. |
||
Kajman Profil |
#2 · Zasláno: 25. 9. 2012, 16:35:13
Nejspíše používate asynchroní požadavek, který zpracovává fukci nastavující navrat až po alertu. Při synchroním přístupu ($.ajaxSetup({async:false});) by se to mohlo chovat, jak čekáte.
|
||
Fibi Profil * |
#3 · Zasláno: 25. 9. 2012, 16:42:52
Ano je to přesně tak, stačilo doplnit ten kód. Díky moc, jste záchrana :-)
Jen nevím když to takhle přepnu, bude to přepnuté jen v této funkci, nebo globálně pro celé jquery ? Pak bych to musel u každého AJAX požadavku nastavovat. Což úpravda není žádná trága. |
||
Nox Profil |
#4 · Zasláno: 25. 9. 2012, 16:44:21
http://api.jquery.com/jQuery.ajaxSetup/
"Set default values for future Ajax requests." 'Nastaví výchozí hodnoty pro budoucí Ajaxové požadavky' |
||
Kajman Profil |
#5 · Zasláno: 25. 9. 2012, 16:52:29
Fibi:
Pokud si $.post přepíšete na $.ajax (klidně s metodou POST), tak můžete async nastavit pro jedno místo jen v tom volání. |
||
Časová prodleva: 12 let
|
0