2009-09-21 8 views
0

J'utilise jQuery pour identifier lorsqu'un utilisateur a soumis le formulaire. Ensuite, j'appelle, en utilisant xajax, une méthode PHP pour interroger la base de données et m'assurer que le nom d'utilisateur et l'adresse e-mail ne sont pas déjà utilisés.Validation des formulaires à l'aide de XAJAX


    $('#newUserForm').submit(function() { 
     var FormName = $(this).attr('name'); 
     xajax_validateEmailAddressAndUsername(xajax.getFormValues(FormName)); 
    }); 

Puis, en validateEmailAddressAndUsername je requête la base de données et valident ainsi. Le problème que j'ai rencontré est que jquery est asynchrone, et il n'y a aucun moyen pour moi d'ajouter un script avec la bonne réponse xajax avant que le formulaire ne soit soumis. comment puis-je résoudre ce problème?
devrais-je le faire d'une manière différente?

J'ai parfois Merci

Répondre

0

problème avec juste en utilisant # (obj) .submit(). .bind semble être plus fiable. Vous pouvez faire quelque chose comme ça, je pense (non testé):

$('#newUserForm').bind('submit', function() { 
    var FormName = $(this).attr('name'); 
    if (xajax_validateEmailAddressAndUsername(xajax.getFormValues(FormName))) { 
      $(this).submit(); 
    } 
    else { 
     alert("Oh no!"); 
     return false; 
    } 
} 
+0

ce code est bloqué dans une récursion infinie ... Mais je pense que vous êtes à quelque chose. Ma question est la suivante: quelle devrait être la réponse de xajax pour la déclaration if à évaluer à TRUE? – Onema

+0

Je vois pourquoi il est bloqué à l'infini, j'étais pressé quand j'ai écrit cette réponse. Le si retourne actuellement vrai et resoumise. Essayez d'utiliser $ .post au lieu de $ (this) .submit() http://docs.jquery.com/Ajax/jQuery.post –

Questions connexes