Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajax error fonction retourne [object object]

    22 août 2017 à 7:32:52

    Bonjour a tous,

    J'ai un probleme avec mon script AJAX, error function retourne toujours un [object object] ou parfois mon code HTML lorsque je fais un POST via AJAX.

    J'ai déja essayé plusieurs solutions mais toujours rien, Est ce que quelqu'un ici pourra me donner un ptit coup de pouce ;-). Merci

    Voici mon script:

    $(document).on('click','#btnClick ul li',function(){
    //t = $(this).text();
    var test = 123;
    $.ajax({
    type:'POST',
    url:'index.php',
    data: test,
    //data:JSON.stringify({'host':test}),
    dataType:'json',
    contentType: "application/json; charset=utf-8",
    success:function(data){
    alert(data);
    },
    error:function(err){
    alert(err);
    }
    })

    });
    • Partager sur Facebook
    • Partager sur Twitter
      22 août 2017 à 10:22:28

      Salut,

      En effet lors d'une erreur l'argument retourné dans la fonction est un objet.

      Tu devrais faire un "console.log(err)" plutôt que ton alert, tu verrais ainsi dans la console quels sont les paramètres de cet objet.

      Pour afficher le message d'erreur tu peux faire :

      alert(err.responseText)
      • Partager sur Facebook
      • Partager sur Twitter
        22 août 2017 à 16:38:32

        Oui, je comprends et Merci mais j'ai  déjà réussit a passer mon variable dans le script php mais le seul soucis c'est que lorsque je fais un <li><?php print($_POST['test']); ?></li> dans mon dropdownlist du script php , la valeur est toujours undefined,

        Je comprends pas d'ou vient l'erreur.

        • Partager sur Facebook
        • Partager sur Twitter
          22 août 2017 à 16:43:06

          Salut,

          tu envoies le nombre 123 , faudrait avoir dans data {'test': test} pour pouvoir récupérer $_POST['test']

          -
          Edité par WillyKouassi 22 août 2017 à 16:45:13

          • Partager sur Facebook
          • Partager sur Twitter
          le bienfait n'est jamais perdu
            23 août 2017 à 7:33:05

            Salut,

            le nombre 123 c’était juste pour tester et ça a marcher Merci.

            Mais le vrai problème ici c'est que lorsque j'affiche la valeur de $_POST['test'] dans mon script php, il affiche mon code HTML et la valeur du POST en bas..

            Alors, comment peut-on avoir que seulement la valeur du $_POST[''] dans mon php??Merci

            • Partager sur Facebook
            • Partager sur Twitter
              23 août 2017 à 10:03:53

              Alors je n'ai rien compris.
              • Partager sur Facebook
              • Partager sur Twitter
              le bienfait n'est jamais perdu
                23 août 2017 à 11:14:33

                Voila le problem:

                $(document).on('click','#btnClick ul li',function(){
                t = $(this).text();
                //alert(test);
                var obj = jQuery.parseJSON('{"test":"'+t+'"}');
                //alert(obj.test);
                $.ajax({
                type:'POST',
                url:'getnum.php',
                data:obj,
                //contentType: 'application/json; charset=utf-8',
                //dataType:'json',
                success:function(data){
                alert(data);

                }
                }).then(function(){
                return $.ajax({
                type:'GET',
                url:'getnum.php',
                //data:'data',
                //dataType:'json',
                //data: JSON.stringify('data'),
                success:function(data){
                alert(data.value);
                },
                error: function (err) {
                alert(err);
                }

                })
                }).done(function(){
                alert('every thing is OK');

                })

                })
                Le problème c'est que data.value  retourne toujours undefined dans la fonction retour de .then(function({...}))
                Voici mon script php:
                <?php include_once 'connec.php' ?>
                <?php
                $result = array();
                //$host = array($_POST['test']);
                //print_r($host);
                //echo $host[0];
                //$val = $host[0];

                if(isset($_POST['test'])){
                $query = "SELECT num_carte FROM carte_professionnel WHERE id_pers= '".$_POST['test']."'";
                $stmt = $DB_con->prepare($query);
                $stmt->execute();

                while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                $result = $row;
                }
                print_r(json_encode($result));
                $stmt->closeCursor();

                }
                ?>
                Besoin d'aide..!!!!!!!Merci
                • Partager sur Facebook
                • Partager sur Twitter
                  23 août 2017 à 11:27:31

                  D'abord au lieu de jQuery.parseJSON(.....) , {"test": t} est suffisant. Ton code JS est confus, comprends-tu les implications de .then ? En as-tu vraiment besoin ? Utilise console.log pour tester tes retours.

                  Lis la doc sur $.ajax ou ici et essaie de refaire ton code. Côté PHP, tu prépares mal ta requête et je suppose que tu veux renvoyer un seul résultat ? Alors le while n'est pas utile, utilise echo au lieu de print_r

                  • Partager sur Facebook
                  • Partager sur Twitter
                  le bienfait n'est jamais perdu
                    23 août 2017 à 11:40:08

                    Problème résolu:

                    C’était juste un problème de conversion.

                    voici le code final:

                    $.ajax({
                    type:'POST',
                    url:'getnum.php',
                    data:obj,
                    //contentType: 'application/json; charset=utf-8',
                    //dataType:'json',
                    success:function(data){
                    alert(data);
                    var h = JSON.parse(data);

                    return $.ajax({
                    type:'GET',
                    url:'getnum.php',
                    cache:false,
                    data:h,
                    success:function(data){
                    for(var i in h){
                    $("#interf ul").append('<li>'+h[i]+'</li>')
                    }
                    },
                    error: function (err) {
                    alert(err);
                    }

                    });

                    }
                    }).done(function () {
                    alert('okok..')
                    })

                    Merci Merci ;-) 

                    -
                    Edité par mathwetherl 23 août 2017 à 16:08:26

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Ajax error fonction retourne [object object]

                    × 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