| 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_kontrolaTedy 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: 13 let
|
|||
0