/ / jQuery convalida il modulo con AJAX - jquery, ajax

jQuery convalida il modulo con AJAX - jquery, ajax

Sto provando a convalidare un modulo utilizzando una chiamata AJAX per verificare l'inventario disponibile.Se il controllo dell'inventario ha un errore, restituisce un messaggio, altrimenti il ​​modulo deve essere inviato.

Ho il codice seguente:

$("form[id*="distributor_"]").submit(function(){
return checkAvailableInventory($(this));
});

function checkAvailableInventory(form) {
$.ajax({
url: "/ajax/quantity.php?" + form.serialize(),
success: function(msg) {
if (msg) {
alert(msg);
return false;
} else {
return true;
}
}
});
}

Ho il sospetto che questo problema si verifichi a causa della natura asincrona di AJAX e che la clausola di successo: la clausola non scatta molto prima del completamento del ciclo di vita checkAvailableInventory ().

Qualcuno ha suggerimenti per risolvere questo problema? Ho visto alcuni esempi di persone che usano i timeout ma sembra una soluzione alternativa con possibili problemi.

risposte:

2 per risposta № 1

Un'opzione è di rendere la chiamata non asincrona. È possibile impostare il async proprety to false. È vero per impostazione predefinita. Non sei sicuro della durata della chiamata, poiché potrebbe bloccare il browser fino al completamento.

MODIFICARE: Un'altra opzione è quella di restituire false dal metodo che effettua la chiamata ajax. Quindi, nel metodo di successo quando raggiunge lì, è possibile separare la funzionalità di invio dal modulo e quindi chiamare semplicemente form.submit e verrà semplicemente postata ovunque dovrebbe normalmente senza la convalida.


0 per risposta № 2

potresti voler controllare il plugin jQuery validate! è abbastanza semplice da usare e gestisce molto bene la validazione remota.

il plugin: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ i documenti sulla convalida remota: http://docs.jquery.com/Plugins/Validation/Methods/remote#options