Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'ordonnancement en ajax

Vérification d'un captcha en ajax lors de l'action submit

    20 août 2010 à 21:24:45

    Ma situation : Je fais un formulaire où je place un captcha avant le submit. J'aimerais faire la vérification du captcha en ajax. Lors du click submit, j'envois la requête ajax et si le captcha correspond je valide la soumission pour pouvoir continuer.
    J'utilise l'ajax pour la vérification du captcha pour éviter à l'utilisateur de perdre ses données si le captcha est mauvais, car lors de la soumission j'envois les données sur une autre page php. L'ajax permet aussi quelque chose de plus agréable.

    $("#Form").submit(function(){
    $("#loadersubmit").show();
    $.post("process.php", {code: $("#code").val()}, 
       function(sData) {
    	if(sData=='OK'){$.resultcaptcha = 'Vrai';}
    	else{$.resultcaptcha = 'Faux';}
            $("#loadersubmit").hide();
       });
    if($.resultcaptcha=='Vrai')
    {
       return true;
    }
    else
    {
       return false;
    }
    });
    

    (process.php)
    <?php
    
    header("Content-Type: text/plain");
    $code    = (isset($_POST["code"])) ? $_POST["code"] : NULL;
     require_once 'securimage/securimage.php';
     $img = new Securimage;
     if ($img->check($code) == false) 
        {
         echo "Incorrect security code entered";
        }
    echo 'OK';
    ?>
    



    Mon problème : L'envoi de la requête ajax se fait bien. Malheureusement le javascript passe aux instructions suivante sans attendre la réponse, il fait alors le traitement de la variable $.resultcaptcha avant qu'elle était modifiée, évidemment le javascript me bloque la soumission même si le captcha est bon. Il faut par exemple cliquer une deuxième fois sur submit pour avoir la valeur de $.resultcaptcha, ce qui n'est pas très user friendly...

    Si vous avez des idées pour m'aider, elles sont les bienvenues
    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      20 août 2010 à 21:27:44

      Passer en mode synchrone (c'est comme ça qu'on dit ?), comme ça ton script attendra la réponse avant de continuer.
      • Partager sur Facebook
      • Partager sur Twitter
      Concepteur Développeur - Vie Artificielle & Optimisation
        20 août 2010 à 21:51:00

        Je regarde la documentation jquery, pour passer en mode synchrone je rajoute l'attribut {async:false} (vrai par défaut).
        Ceci donne :
        $.post("process.php", {async:false}, {code: $("#code").val()}, function(sData) { //...etc }
        


        Malheureusement, j'ai l'impression qu'il ne me renvoie jamais la réponse de la vérification...
        • Partager sur Facebook
        • Partager sur Twitter
          23 août 2010 à 15:25:24

          Si des personnes ont d'autres idées, parce que je n'arrive pas à faire marcher le code correctement...
          • Partager sur Facebook
          • Partager sur Twitter

          Problème d'ordonnancement en ajax

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown