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

jQuery Discussion :

post() ne me retourne rien [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Par défaut post() ne me retourne rien
    Bonjour,

    Dans ma page d'acceuil index.php, j'ai un mini formulaire pour s'inscrire à la newsletter avec un seul champ pour saisir son email.

    Si cet email est validé par ajax.php, l'utilisateur est renvoyé vers une page newslettersignup.php pour compléter ses données et choisir ses options.

    Au submit, si ajax.php ne valide pas l'email saisi, une petite div lui affiche ses erreurs: champ vide, email erroné ou email déjà enregistré dans la bdd.
    Je n'arrive pas à faire afficher les erreurs dans la div #error_email, et au submit, le post() du jQuery me redirige vers ajax.php (qui lui, m'affiche les erreurs).

    Je débute en ajax et aimerais bien qu'on me donne un coup de pouce. Merci

    index.php:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form id="frm_nl" action="ajax.php" method="post">
    	<input id="email" name="email" type="text" placeholder="Votre adresse e-mail">
    	<input id="submit" name="submit" type="submit" value="OK">
    </form>
    <div id="error_email"></div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $(document).ready(function () {
    	$("#submit").click(function(){ 
    		$.post(
    			"ajax.php",
    			{email:$('#email').val()},
    			function(data){
    				$('#error_email').val(data);
    			}
    		);
    	});
    });
    ajax.php:
    Code php : 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
    <?php
    if(isset($_POST['submit'])){             
    	$email=$_POST['email'];
    	$_SESSION['email'] = $email;
    	require("config-db-newsletter.php");
    	mysql_connect($adresse,$nom,$motdepasse);
    	mysql_select_db($database); 
    	$sql = "SELECT * FROM email_table WHERE email = '".$email."' ";
    	$query = mysql_query($sql) or die(mysql_error());
    	$row = mysql_num_rows($query);
    	if(empty($email)){
    		echo "Veuillez renseigner une adresse mail";
    	}else if(! filter_var($email,FILTER_VALIDATE_EMAIL))  {
    		echo "E-mail non valide. Veuillez recommencer";
    	}else if($row>0){
    		echo "Adresse mail déjà enregistrée";
    	}else{
    		header('Location:newslettersignup.php '); 
    	}
    }		
    ?>

  2. #2
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    En fait ici tu essaye d'effectuer une requête ajax alors que tu es déjà en train de soumettre ton formulaire au serveur.

    je te conseil de faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $(document).ready(function () {
    	$("#submit").submit(function(){ 
    		$.post(
    			"ajax.php",
    			{email:$('#email').val()},
    			function(data){
    				$('#error_email').val(data);
    			}
    		);
                   return false; // empêche la soumission native du formulaire.
    	});
    });

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Par défaut
    Salut Darkaurora,
    Merci de me signaler le return false.
    À part que ça empêche la soumission du formulaire, la requête ne s'effectue plus pour espérer un retour du serveur.
    N'empêche, j'ai trouvé la solution que je posterais de suite.
    Merci

  4. #4
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    Le patern pour votre besoin est du type :

    Code js : 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
     
      Bouton.click(
     
     
          $.post(
            //...
           )
          .done(function(data){
            if (data.valide)
              // submit form
            else
              // affiche erreur
          });
     
     
        );
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  5. #5
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Si tu souhaites soumettre le formulaire pourquoi faire de l'AJAX ? De plus je t'ai mis sur la piste mais je ne t'ai pas dis que ça aller fonctionner En fait tu effectues tes tests dans le ajax.php uniquement si une variable $_POST['submit'] est reçus, au niveau de ta requête ajax tu passes une variable email mais pas une variable submit.

    Maintenant si tu souhaites soumettre ton formulaire par la suite, je suis désolé de te dire que ça ne rime à rien de mon point de vue

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    @Darkaurora Il souhaite transmettre le formulaire uniquement après avoir vérifier la validité du mail, d'où la requête ajax.

    Mais c'est vrai que d'un autre côté, un pirate pourrait néanmoins envoyer le formulaire avec un mail non vérifié par cette requête. Il faudra donc systématiquement revérifier cette adresse à réception du formulaire. Et donc effectivement on peut douter de l'utilité de cette requête ajax.

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

Discussions similaires

  1. [Java][debutant]select count(*) ne retourne rien !!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/01/2007, 11h39
  2. Fonction ne retournant rien ?
    Par bds2006 dans le forum Delphi
    Réponses: 8
    Dernier message: 05/06/2006, 14h47
  3. Erreur query ne retourne rien
    Par TeddyBEER dans le forum Outils
    Réponses: 3
    Dernier message: 28/04/2006, 15h09
  4. Si mysql ne retourne rien que faire ?
    Par pierrera dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/02/2006, 11h12
  5. SELECT qui ne retourne rien à cause d'anti-slash
    Par mikyfpc dans le forum Outils
    Réponses: 8
    Dernier message: 07/08/2005, 23h04

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