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 :

Envoyer formulaire Ajax/Jquery


Sujet :

jQuery

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 215
    Points : 65
    Points
    65
    Par défaut Envoyer formulaire Ajax/Jquery
    Bonjour,
    Je débute en jquery et voici mon problème :

    J'ai un formulaire qui permet d'ajouter une entrée dans une table (INSERT).
    Voici ma fonction jquery :
    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
     
    $(function() 
    {	   
    		$(".ajax").submit( function(e) {
     
         e.preventDefault(); // on empeche l'envoi du formulaire par le navigateur
         var datas = $(this).serialize();          
         $.ajax({
              type: 'POST',      // envoi des données en POST
              url: traitement.php,    
              data: datas,     // sélection des champs à envoyer
              success: function(data) {  
    		  // callback en cas de succès
     
                         //affiche un message de succès
              }
         });
    	});
     
     
     });
    Et voici Mon fichier traitement.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $var1 = $_POST["var1"];
    $var2=$_POST['var2'];
    $var3 = $_POST"[var3"];
     
    $sql= mysql_query("INSERT INTO MATABLE VALUES ('',$var1,$var2,$var3)") or die(mysql_error());
    Ceci marche très bien , l'insertion dans la base fonctionne sans recharger la page.

    Mais je voudrais exécuter l'insert dans la base uniquement dans certain cas et traiter les cas success ou error :
    En l'occurence, en fonction d'un resultat d'une requete SQL:
    SELECT nb FROM USER WHERE USER=1;

    Condition par exemple nb>10

    si nb>10 --> INSERT dans la base
    sinon --> pas d'insert + alert()

    Je pense qu'il faudrait utiliser la fonction callback succes mais je ne sais pas comment et a quel endroit vérifier la condition.


    J'espère avoir été clair , ce n'est pas très facile d'expliquer.

    Je reste a votre disposition pour toutes informations supplémentaires

    Merci de votre aide

    Thomas

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 77
    Points
    77
    Par défaut
    Si j'ai bien compris, vous voulez des feedbacks du côté serveur?

    Moi ce que j'ai fait dans mon projet, mon script PHP génère un fichier XML contenant des feedback.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    header('content-type: text/xml');
    // Si erreur
    echo '<response>';
    echo '  <error>il y a un problème là</error>';
    echo '</response>';
     
    // Si tout se passe bien
    echo '<response>';
    echo '  <success>Ca va, tout va bien.</success>';
    echo '</response>';
    Et puis le côté jQuery:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $.ajax({
      ... ... autres config de la requête ajax ... ...
      success:
        function(data){
          // Voilà, il y a un problème, j'affiche le message d'erreur retourné.
          if($(data).find('error').length > 0){
            alert($(data).find('error').text());
            return;
          }
          ... ... Si la requête a été exécuté sans problème, je fais d'autres choses.
        }
    });

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 215
    Points : 65
    Points
    65
    Par défaut
    Parfait ca devrait marcher mais juste une question :

    Mais si la requete c'est executé sans probleme comment exécuter ma requete SQL dans la fonction jquery .

    A savoir ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $.ajax({
      ... ... autres config de la requête ajax ... ...
      success:
        function(data){
          // Voilà, il y a un problème, j'affiche le message d'erreur retourné.
          if($(data).find('error').length > 0){
            alert($(data).find('error').text());
            return;
          }
          ... ... Si la requête a été exécuté sans problème, je fais d'autres choses.
              // REQUETE SQL INSERT 
        }
    });
    Merci pour ta réponse rapide.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 77
    Points
    77
    Par défaut
    En fait, tout est dans le script 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
     
    header('content-type: text/xml');
     
    $nb = mysql_query('... ... ... ');
    if($nb > 10){
      echo '<response>';
      echo '  <error>Nb ne doit pas être supérieur à 10</error>';
      echo '</response>';
      exit(); // On s'arrête là
    }
     
    // Récupérer les POST et insérer les données
    mysql_query("INSET INTO ... ...{$_POST['var1']}, {$_POST['var2']}");
    echo '<response>';
    echo '  <success>Données insérées.</success>';
    echo '</response>';
    Ensuite côté jQuery:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $.ajax({
      ... ... autres configurations ajax ... ...
      success:
        function(data){
          if($(data).find('error').length > 0){
            alert($(data).find('error').text();
            return;
          }
          alert('données insérées successfully!');
        }
    });

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 215
    Points : 65
    Points
    65
    Par défaut
    Parfait Merci beaucoup !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/05/2013, 13h29
  2. [AJAX] formulaire connexion AJAX JQUERY PHP
    Par babahou dans le forum jQuery
    Réponses: 0
    Dernier message: 11/08/2012, 15h54
  3. Réponses: 7
    Dernier message: 16/05/2012, 15h13
  4. Probleme sur un formulaire envoyé en ajax
    Par john anderta dans le forum jQuery
    Réponses: 2
    Dernier message: 09/08/2011, 11h45
  5. Réponses: 5
    Dernier message: 13/09/2008, 11h49

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