Bonsoir,

J'ai écris un script jQuery avec de l'ajax pour envoyer des données en bdd.
Mon code a l'air de bien fonctionner (vu que sur l'onglet Network de l'inspecteur Chrome j'ai un code http 200 et que je vois les datas envoyé)
Mais ma fonction callback me renvoit Error dans le console.log et donc (par logique) j'en ai déduis que c'était pour ça que mon var_dump en PHP m'affichait "NULL".

Ma question est donc qu'est ce qui ne va pas ?

Mon JS

$(document).ready(function(){
  $("#submit_write").click(function(){
      var title_writer = $(".title_writer").val();
      var text_writer = $(".text_writer").val();
      $.post(
        'writer.php',
        {
            title_writer : $("#title_writer").val(),
            text_writer : $("#text_writer").val()
        },
        function(data){
            if(data == 'Success'){
                $(location).attr('href',"");
            } else {
              console.log("Erreur");
            }
        },
        'text'
      );
  });
});

PS : Au cas où ça viendrait de là, en PHP sur ma page où je suis censé faire le traitement j'utilise un petit code pour détecter si la personne est connecté, et si elle ne l'est pas elle se fait rediriger.. J'ai peur que cette condition ai une influence sur l'affichage de la data.. Mais j'en doute un peu.

14 réponses


keulu
Réponse acceptée

ben tu attend que ton retour soit exactement egale a 'Success',

Normal que tu n'aille jamais dedans si tu met des var dump et du debug

stockecedric
Réponse acceptée

La function(data) s'execute direcement quand ta requête est finit donc tu peux mettre directement le code à exécuter si tu ne dois pas vérifier le resultat du php.

keulu
Réponse acceptée

petit cours pratique pour la suite.

en php fait un petit

$data = array(
    'success' => true,
    'data' => array(
        'title_writer' => $_POST['title_writer'],
        'text_writer' => $_POST['text_writer']
    )
);

echo json_encode($data);

et dans ton JS, tu recevra un objet

function(data){
  if(data.success){
    console.log("Writer : " + data.data.title_writer);
  } else {
    console.log("Erreur");
  }
},

Montre nous le code php.

Laznet
Auteur

Voici le code qui est censé afficher (pour tester) les valeurs récupéré :

      $title_writer = $_POST['title_writer'];
      $text_writer = $_POST['text_writer'];
      var_dump($title_writer);
      var_dump($text_writer);

C'est le contenu de ton fichier writer.php?

Laznet
Auteur

Pas tout le code ^^ Le reste c'est juste un affichage de quelque erreurs et comme expliquer au dessus le code pour rediriger si l'user n'est pas connecté.

Montre le code pour rediriger , php ne peut pas te rediriger à travers ajax.

Comme le dit keulu à aucun moment tu n'affiche "Success" donc jquery ne va jamais faire ce qui est dit dans ta condition.

Laznet
Auteur

Ah ^^ Je l'avais oublié celui là xD

Alors comment tu ferais pour savoir si tout s'est bien passé ?

Dans ta condition en php tu fais un echo 'Success' et si tu n'affiches rien d'autre ça marchera.

Laznet
Auteur

Nan je parlais côté JS ^^, genre dire si l'état = success

un peu comme onreadystatechange ^^

Laznet
Auteur

Mais en tout cas merci !

Laznet
Auteur

Ok nice :D