IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Ajax(jQuery) - Doctrine - Zend - Requête Ajax vide [ZF 1.9]


Sujet :

Zend Framework PHP

  1. #1
    Membre actif
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Points : 254
    Points
    254
    Par défaut Ajax(jQuery) - Doctrine - Zend - Requête Ajax vide
    Bonjour à tous,

    J'ai un petit souci au niveau ajax pour savoir si l'e-mail entré dans le formulaire est déjà ou non dans la base de donnée.

    Je pense (mais peut-être que je me trompe) que mon problème se situe soit au niveau de l'url de mon fichier php, soit au niveau du placement de mon fichier js.

    Je sais qu'il existe des plugins jQuery tout prêt pour la validation de formulaire, mais ici je n'ai qu'un seul champ qui demande le mail, je ne voudrais pas surcharger ma page pour rien. Et ça me permet d'apprendre en plus

    Voila les codes et les emplacements :

    Je travail avec le layout, situé donc dans (wamp) www/defi/app/layouts/layout.phtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    //LAYOUT
    <?php 
      $bu = $this->baseUrl();
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
     
      <!-- Script -->
      <script type="text/javascript" src="<?php echo $bu;?>js/jquery.js"></script>
      <script type="text/javascript" src="<?php echo $bu;?>js/mail.js"></script>
    </head>
    //Fin du layout....
    Donc mon fichier js (mail.js) est appelé depuis le layout. L'appel fonctionne bien, j'ai testé avec d'autres fonctions.


    Ensuite, mon fichier js : www/defi/public/js/mail.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    $(document).ready(function(){
     
      //Formulaire d'e-mail
      $('#formmail').submit(function(event) {
        var mail = $('#mail').val(); 
        var reg = new RegExp("^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$", "gi"); 
        $(".invalide").css("display","none");
        $(".exist").css("display","none");
        $(".valide").css("display","none");
        if(!(mail.match(reg))) {
          $(".invalide").css("display","inline");
          event.preventDefault();
        }
        else {
          var url = "/defi/public/verif/index?m="+mail;
          $.ajax({ 
            type: "POST", 
            ContentType: "text/plain; charset=UTF-8",
            url: url, //Bonne url ?
            success:function(data){
              alert(data); //Alert vide :(
              if(data==0) { 
                $(".valide").css("display","inline");
              } 
              else if(data==1) { 
                $(".exist").css("display","inline");
                event.preventDefault();
              } 
              else if(data==2) {
                $(".invalide").css("display","inline");
                event.preventDefault();
              }
            } 
          }); 
        }
      });
      });
    Donc, au clic sur submit, je vérifie déjà que le mail est "valide", si non, j'affiche un span qui contient l'erreur et je bloque l'envoie du formulaire. Si oui, je fais ma fonction ajax, et c'est donc à cet endroit que ça pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    //Formulaire d'e-mail
          var url = "/defi/public/verif/index?m="+mail;
          $.ajax({ 
            type: "POST", 
            ContentType: "text/plain; charset=UTF-8",
            url: url, //Mon url est elle correct ? 
            success:function(data){
              alert(data);//Cette alert est vide !
              if(data==0) { 
                $(".valide").css("display","inline");
              } 
              else if(data==1) { 
                $(".exist").css("display","inline");
                event.preventDefault();
              } 
              else if(data==2) {
                $(".invalide").css("display","inline");
                event.preventDefault();
              }
            } 
          }); 
        }
      });
    Et donc, voici la page de l'url donnée (/defi/public/verif/index?m="+mail). Tout d'abord le contrôleur, placé dans www/defi/app/controllers/VerifController.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    class VerifController extends Zend_Controller_Action {
     
    	function indexAction() {
        $this->view->title = '';
     
        if(!empty($_GET["m"])) { 
          $mail=$_GET["m"]; 
          try {
            $verif = Doctrine_Core::getTable('Mail');
            $rep = $verif->mail($mail);/*Cette fonction fait un count sur le mail passé en paramètre, donc retourne soit 0, soit 1*/
          }
          catch(Exception $e) {
            echo $e;
          }
          $this->view->data = $rep;
        }
        else {
          $this->view->data = 2;
        }
    	}
    }
    ?>
    Et la vue associé, placé dans www/defi/app/views/scripts/verif/index.phtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php 
      echo $this->data;
    ?>
    Elle ne fait qu'afficher le nombre envoyé, donc soit 0, soit 1
    Quand je test en allant depuis le navigateur à l'adresse :
    * localhost/defi/public/verif/index?m= il m'affiche bien 2 (get vide)
    * localhost/defi/public/verif/index?m=test@mail.com il m'affiche bien 1 (email de test enregistré dans ma bdd)
    * localhost/defi/public/verif/index?m=test@test.com il m'affiche bien (email non existant dans la base.)

    Est-ce que quelqu'un voit mon erreur ?

    Merci d'avance !

    PS : petits ajouts :
    En testant avec différents url :

    localhost/defi/public/verif/index?m=unmaildetest@rien.com
    /defi/public/verif/index?m=unmaildetest@rien.com
    /public/verif/index?m=unmaildetest@rien.com
    /verif/index?m=unmaildetest@rien.com
    verif/index?m=unmaildetest@rien.com
    Mon alert, censé contenir le data a 0 ou 1 est toujours vide

    En posant un debugger dans le succes, j'arrive bien dedans, mais data ne contient aucune donnée.

  2. #2
    Membre actif
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Points : 254
    Points
    254
    Par défaut
    Bon, au cas ou certaines personnes rencontreraient le même genre de problème :
    Au lieu de vérifier au "submit", je vérifie à chaque lettre entrée dans le formulaire. Si le mail est invalide, je l'affiche, le bouton "ok" est désactivé, sinon je fais le test ajax pour savoir s'il se trouve dans la base. Si oui, alors j'affiche que le personne 'est déjà enregistrée, sinon alors je débloque le bouton ok.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requête Ajax : Jquery / Java et JSONArray
    Par Gamergeo dans le forum jQuery
    Réponses: 6
    Dernier message: 10/10/2013, 15h58
  2. [Qt WebKit] Requête Ajax avec JQuery pour charger un fichier XML
    Par Maxbester dans le forum Moteurs Web
    Réponses: 0
    Dernier message: 17/12/2012, 13h42
  3. Ajax/jquery et zend framework
    Par Invité dans le forum Zend Framework
    Réponses: 1
    Dernier message: 27/06/2011, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo