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

AJAX Discussion :

Mystère d'un Alert() dans requête ajax


Sujet :

AJAX

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Mystère d'un Alert() dans requête ajax
    Bonjour à tous,

    je suis en train de mettre en place une fonction,

    le but est, évidemment, de passer les variables :
    idligne et valeur dans resultat.php
    pour vérification, resultat.php envoie dans ma base de données les valeurs postées.

    la function ci-dessous écrite est opérationnelle, et je reçois bien mes données en base.
    Le problème est que si je supprime alert() en fin de fonction, resultat.php ne renvoie pas les données à la base, je suppose donc que la fonction ne marche plus.
    Bien évidemment, je ne veux pas d'alert().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function essai(){
    	var idligne = <?php echo $idligne ; ?>;
    	var valeur = document.getElementById("valeur").value;
     	$.ajax({
    		type: 'post',
    		url: './resultat.php',
    		data: {idligne : idligne , valeur : valeur },	
    		dataType : 'json',
    	});
    		alert();
    }
    merci d'avance pour un coup de main, et toute ma gratitude pour une solution, car je m'arrache les cheveux depuis 15 jours.

    bien à vous

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 957
    Points : 44 121
    Points
    44 121
    Par défaut
    Bonjour,
    le A de Ajax signifie Asynchrone donc le résultat/retour n'est pas disponible immédiatement par contre ton alert() bloque le script, il est synchrone.

    Comment est appelée ta fonction essai() et qui l’appelles ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci de prendre en compte mon souci
    je l'appelle par un submit :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="valide" Value ="Valider" onclick="essai(this)" ></input>


    j'aurais pu faire un
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['valide'])){}
    ,
    mais étrangement, alors que je m'en sert un peu partout il ne fonctionne pas sur cette page.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 957
    Points : 44 121
    Points
    44 121
    Par défaut
    Il te faut annuler le comportement par défaut ce qui donnerait
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="valide" Value ="Valider" onclick="essai(event)" ></input>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function essai(ev){
      ev.preventDefault();
      var idligne = <?php echo $idligne ; ?>;
      // la suite ...

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    effectivement, cela passe en base,
    Mais la page de mon FORM est contenue dans une div,
    qui doit se fermer au click,
    J'avais essayé un button tout simple, ca ne se fermait pas, et là ça ne se ferme plus.

    Mais en tout cas j'ai retrouvé le sourire. Merci.

  6. #6
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    il y a une virgule en trop ( ligne 8 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function essai(){
      var idligne = <?php echo $idligne ; ?>;
      var valeur = document.getElementById("valeur").value;
      $.ajax({
        type: 'post',
        url: './resultat.php',
        data: {idligne : idligne , valeur : valeur },	
        dataType : 'json' , 
      });
    }
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  7. #7
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    merci,

    après essai avec ou sans même résultat.

    le event.preventDefault(); m'a avancé, mais me pose le soucis decrit ci dessus
    je continue de chercher
    Bonne soirée a tous

  8. #8
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    alors ,c'est peut-être parce qui'l faut tj gérer un retour, même s'il est vide.
    Code JavaScript : 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
          function essai(){
            var idligne = <?php echo $idligne ; ?>;
            var valeur = document.getElementById("valeur").value;
            $.ajax({
              type: 'post',
              url: './resultat.php',       // est cencé se terminer par un exit(0);
              data: {idligne : idligne , valeur : valeur },	
              dataType : 'json',
              error: function (request, error) {
                console.log("Erreur : " + request.responseText);  // peut être utile pour comprendre si qqchose cloche par ici...
              },
              success: function (data) {
                 // rien.
              }
            });
          }
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 957
    Points : 44 121
    Points
    44 121
    Par défaut
    Mais la page de mon FORM est contenue dans une div,
    qui doit se fermer au click,
    pourrais tu préciser la notion de « se fermer », ne plus apparaître à l'écran ?

    Ta structure HTML serati un plus.

  10. #10
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    bonjour,

    en fait j'ai une frame composée de 3 div
    la premier est le relevé de toutes les adresses d'un tiers.

    en sélectionnant une adresse, j'appelle une page.php ou des boutons sont indexés sur l'adresse sélectionnée préalablement, (idligne notamment, qui passe en ajax sans souci).
    Un de ces bouton sert pour la modification de l'adresse, et appelle donc formulaire.php dans une troisième div.

    c'est donc ici, ou la validation du formulaire ne marchant pas avec if (isset...
    (il va falloir que je sache pourquoi, quand meme),
    j'ai essayé de valider par l'ajax qui m'a posé le probleme que j'ai soumis ici.

    du coup cette troisième div doit disparaitre après validation,
    ... et mettre à jour l'adresse modifiée, mais je n'y suis pas encore.

  11. #11
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
              error: function (request, error) {
                console.log("Erreur : " + request.responseText);  // peut être utile pour comprendre si qqchose cloche par ici...
              },
              success: function (data) {
                 // rien.
              }
    Bonjour,
    Et bien je te remercie beaucoup car j'ai visiblement une erreur puisque le message que j'obtiens est :
    "Erreur : "
    sans rien derriere, donc je ne sais pas ou regarder.

  12. #12
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    ben faut ajouter un console.log(error); à la suite du précédent,

    mais visiblement c'est dans ton php appelé par le call ajax que ça se passe, il ne joue pas le jeu en retour....
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  13. #13
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    le code n'est pas bien compliqué pour resultat.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    include("../base/config.php");
     
    $insert = mysqli_query($base, "INSERT INTO controle.verif (`detail`) VALUES (' ouverture page ok' )");
    $idligne = $_POST['idligne']; 
    $valeur = $_POST['valeur '];
    		$insert = mysqli_query($base, "INSERT INTO controle.verif (`detail`) VALUES ('la valeur est $valeur' )");
    ?>

    je viens de rajouter console.log(error) pour resultat dans la console
    "
    Erreur :
    error

    en face j'ai le nom de mapageprincipale.php suivi de 15:13 et 15:4

    a quoi correspondent ces chiffres?
    merci

  14. #14
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    les chiffres c'est des numéro de ligne:colonne qui posent problème sur le fichier indiqué.

    il y un espace en trop dans $_POST['valeur '] (pas sur que ça pose pb


    essaie ça...
    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
    22
    23
    24
    25
    26
    27
    28
    <?php
    mb_internal_encoding("UTF-8");  // parce que tous les serveurs ne sont pas toujours en utf8 par défaut !
     
    include("../base/config.php");
     
     
    $idligne = (isSet($_POST['idligne'])) ? $_POST['idligne'] : '';
    $valeur  = (isSet($_POST['valeur'])) ? $_POST['valeur'] : '';  // mettre une valeur par défaut...?
     
    $infoRetour = array();
     
    $insert = mysqli_query($base, "INSERT INTO controle.verif (`detail`) VALUES (' ouverture page ok' )");
     
    if ( $idligne == '' || $valeur == '' ) {
      $insert = mysqli_query($base, "INSERT INTO controle.verif (`detail`) VALUES (' idLigne ou valeur non renseigné ' )");
      $infoRetour[0] = 'params en entré non renseignés';
    } else {
      $insert = mysqli_query($base, "INSERT INTO controle.verif (`detail`) VALUES ('la valeur est $valeur' )");
      $infoRetour[0] = 'traitement OK';
    }
     
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Mon, 26 Jul 2000 05:00:00 GMT");  // pour forcer la maj du cache
     
    header('Content-type: application/json');
    echo json_encode($infoRetour);
    exit(0);
    ?>
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  15. #15
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    bonjour,

    J'ai bien avancé sur le sujet, (vu le temps que j'ai mis à revenir, mais j'e n'ai pas fais que çà)

    le code suivant fonctionne :

    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
    function (){
         $("#idformulaire").submit(function(){    //se lance quand on valide le formulaire
    	var idligne = <?php echo $idligne ; ?>;
    	var valeur = document.getElementById("valeur").value;
     	$.ajax({
    		type: 'post',
    		url: './resultat.php',
    		data: {idligne : idligne, valeur : valeur },
    			function(data){
    			$("#madiv").fadeOut();
    		}); 
            return false;
         });  
     
    });
    avec un submit tour ce qu'il y a de plus normal, sans l'evenement onCliclick() et sans annuler son comportement.(reponse : NoSmoking qui m'a quand meme bien mis sur la piste.)

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="valide" Value ="Valider"></input>


    @NoSmoking, @psychadelic,
    Un grand merci à tous les deux pour votre intérêt et l'aide précieuse que vous apportez, parce qu'on ne le dit pas assez sur les forums, il y a des gens qui perdent un peu de temps à nous en faire gagner beaucoup...

    Bien à vous,

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

Discussions similaires

  1. [AJAX] Status dans une requete Ajax toujours nul
    Par Astarion dans le forum AJAX
    Réponses: 1
    Dernier message: 14/07/2010, 07h56
  2. Encodage des & et + dans une requete AJAX
    Par camcam8782 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 16/09/2009, 11h02
  3. [AJAX] requete ajax dans formulaire d'édition
    Par knebhi dans le forum AJAX
    Réponses: 4
    Dernier message: 18/08/2009, 15h42
  4. Utilisation requete AJAX et recuperation des donnees dans un WS
    Par clairette59 dans le forum Services Web
    Réponses: 1
    Dernier message: 15/08/2008, 22h08
  5. [AJAX] deux requetes ajax dans une même page
    Par mitmit dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/05/2007, 12h52

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