j'essaie de faire une requete ajax sur un lient mais j'ai l'erreur suivante:

SCRIPT5009: 'data' is not defined

voici mon lien:

<a data-id="amitier" href="/fiche_cli/ajoute_amis.php?pseudo=<?php echo $_GET['pseudo']; ?>" class="ajoute_amis">Amitier</a>

et mon script ajax

$(document).ready(function() {
  $("body").on('click', '.ajoute_amis',function(event) {
  event.preventDefault();

  var pseudo = $('.ajoute_amis').attr('data-id');

    $.ajax({
       url : '/fiche_cli/ajoute_amis.php',
       type : 'GET',
       data : 'pseudo=' + pseudo, // On fait passer nos variables, exactement comme en GET, au script more_com.php
       dataType : 'html',
       success : function(code_html, statut){

           $("#fiche-1").html(data);

       },

       error : function(resultat, statut, erreur){

       },

       complete : function(resultat, statut){

       }

    });

  });
});

12 réponses


Kenor
Réponse acceptée

hum,
console.log affiche dans la console
alert affiche une alerte.

resultat.status contient ta donnée.

donc si tu tiens à le mettre dans une variable

var result = resultat.status;
alert(result); // affiche une alerte
console.log(result); // affiche dans la console

Salut,
je crois que data doit être un tableau ou un objet ;=

    { "pseudo": pseudo}

ou alors tu met pas data ;)

    url : '/fiche_cli/ajoute_amis.php?pseudo='+pseudo,

@plus

Pierre

Remplace 'data' par 'code_html'

 $("#fiche-1").html(code_html);

merci ça fonctionne, je n'en aurais pas l'utilité pour cette fonction car je n'afficherais pas la page appelé mais c'est bien à savoir pour la suite de mes fonctions

voila ce que j'ai codé:

$(document).ready(function() {
  $("body").on('click', '.ajoute_amis',function(event) {
  event.preventDefault();

var pseudo = $('.ajoute_amis').attr('data-id');

  swal({
  title: 'Ajouter comme amis?',
  text: "Confirmez pour ajouter <?php echo $_GET['pseudo']; ?> à votre liste d'amis",
  type: 'warning',
  showCancelButton: true,
  confirmButtonText: 'Confirmer',
  cancelButtonText: 'Annuler',
  confirmButtonClass: 'btn-success',
  cancelButtonClass: 'btn-danger',
  buttonsStyling: false,
  reverseButtons: true
}).then((result) => {
  if (result.value) {

 $.ajax({
       url : '/fiche_cli/ajoute_amis.php',
       type : 'GET',
       data : 'pseudo=' + pseudo, // On fait passer nos variables, exactement comme en GET, au script more_com.php
       dataType : 'html',
       success : function(code_html, statut){

           //$("#fiche-1").html(code_html);

       },

       error : function(resultat, statut, erreur){

           swal({
        position: 'error', 
        type: 'success', 
        confirmButtonClass: 'btn',
        buttonsStyling: false,
        text: 'Une erreur c\'est produite, veuillez réessayer...'       

        })

       },

       complete : function(resultat, statut){

           swal({
        position: 'center', 
        type: 'success', 
        confirmButtonClass: 'btn',
        buttonsStyling: false,
        text: '<?php echo $_GET['pseudo']; ?> a bien été ajouté à votre liste d\'amis'      

        })

       }

    });

    } 
})

  });
});

donc j'apelle la page pour ajouter un ami si il y a une erreur j'affiche une alerte et si tout c'est bien passé également par contre sur la page appelé je vérifie si le pseudo n'est pas déjà amis avec la personne et si c'est le cas est il possible de récupérer ce résultat et afficher une erreur sur "complete"

voici ce que je fait sur la page appelé

<?php 
session_start(); 

include "".$_SERVER['DOCUMENT_ROOT']."/include/mysql_connect.php";

$sql = mysql_query("SELECT COUNT(*) FROM liste_amie WHERE proprio='".$_SESSION['pseudo']."' AND pseudo='".$_GET['pseudo']."'") or die (mysql_error());
list($nombre) = mysql_fetch_row($sql);

if ($nombre == '0')
{
$sql2 = "INSERT INTO liste_amie (proprio,pseudo) VALUES('".$_SESSION['pseudo']."','".$_GET['pseudo']."')";
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());
}

 ?>

dals la page appelé j'ai fait ceci:

$o = new stdClass();
header('content-type: application/json');
$o->status = 'NOT_OK';
echo json_encode($o);

dans ma fonction ajax

$(document).ready(function() {
  $("body").on('click', '.distances',function(event) {
  event.preventDefault();
    var url = $(this).prop('href');

    $("#fiche-1").load(url);

  });
});

$(document).ready(function() {
  $("body").on('click', '.ajoute_amis',function(event) {
  event.preventDefault();

var pseudo = $('.ajoute_amis').attr('data-id');

  swal({
  title: 'Ajouter comme amis?',
  text: "Confirmez pour ajouter <?php echo $_GET['pseudo']; ?> à votre liste d'amis",
  type: 'warning',
  showCancelButton: true,
  confirmButtonText: 'Confirmer',
  cancelButtonText: 'Annuler',
  confirmButtonClass: 'btn-success',
  cancelButtonClass: 'btn-danger',
  buttonsStyling: false,
  reverseButtons: true
}).then((result) => {
  if (result.value) {

 $.ajax({
       url : '/fiche_cli/ajoute_amis.php',
       type : 'GET',
       data : 'pseudo=' + pseudo, // On fait passer nos variables, exactement comme en GET, au script more_com.php
       async: true,
       dataType : 'json',
       success : function(code_html, statut, resultat){

           //$("#fiche-1").html(code_html);
           //alert(resultat);

       },

       error : function(resultat, statut, erreur){

           swal({
        position: 'error', 
        type: 'success', 
        confirmButtonClass: 'btn',
        buttonsStyling: false,
        text: 'Une erreur c\'est produite, veuillez réessayer...'       

        })

       },

       complete : function(resultat, statut){
           alert(resultat);
/*         
           swal({
        position: 'center', 
        type: 'success', 
        confirmButtonClass: 'btn',
        buttonsStyling: false,
        text: '<?php echo $_GET['pseudo']; ?> a bien été ajouté à votre liste d\'amis'      

        })
*/
       }

    });

    } 
})

  });
});

mais j'alerte me donne

[object Object]

Ne fait pas "alert(...);" mais "console.log(...);" (et ouvre ta console) pour savoir ce que contient ton object.

j'ai bien mes données en console avec ce que tu m'as dit

responseJSON
:
{status: "NOT_OK"}
responseText
:
"{"status":"NOT_OK"}"

mais comment les recuperer dans ma requete pour les traiter?

console.log(resultat.status);

var result = console.log(resultat.status);
            alert(result);

la ça me retourne undefined

pourtant en console j'ai bien une valeur qui est NOT_OK

merci pour votre aide mon script fonctionne nikel maintenant
voici ce que j'ai fait:

$(document).ready(function() {
  $("body").on('click', '.bloquer',function(event) {
  event.preventDefault();

var pseudo = $('.bloquer').attr('pseudo');

  swal({
  title: 'Ajouter en liste noir?',
  text: "Confirmez pour ajouter <?php echo $_GET['pseudo']; ?> à votre liste noir",
  type: 'warning',
  showCancelButton: true,
  confirmButtonText: 'Confirmer',
  cancelButtonText: 'Annuler',
  confirmButtonClass: 'btn-success',
  cancelButtonClass: 'btn-danger',
  buttonsStyling: false,
  reverseButtons: true
}).then((result) => {
  if (result.value) {

 $.ajax({
       url : '/fiche_cli/bloquer.php',
       type : 'GET',
       data : 'pseudo=' + pseudo, // On fait passer nos variables, exactement comme en GET, au script more_com.php
       async: true,
       dataType : 'json',
       success : function(code_html, statut){

           //$("#fiche-1").html(code_html);
       },

       error : function(resultat, statut, erreur){

           swal({
        position: 'error', 
        type: 'success', 
        confirmButtonClass: 'btn',
        buttonsStyling: false,
        text: 'Une erreur c\'est produite, veuillez réessayer...'       
        })
       },

       complete : function(resultat, statut){

                  console.log(resultat);

          var result = resultat.responseText;

          if (result == 'AMI')
          {
              swal({
              position: 'center', 
              type: 'error', 
              confirmButtonClass: 'btn',
              buttonsStyling: false,
              text: 'Vous devez d\'abord supprimer <?php echo $_GET['pseudo']; ?> de vos amis'      
        })
          }

          if (result == 'BLOQUE')
          {
              swal({
              position: 'center', 
              type: 'error', 
              confirmButtonClass: 'btn',
              buttonsStyling: false,
              text: 'Vous avez déjà bloqué <?php echo $_GET['pseudo']; ?>'      
        })
          }

          if (result == 'OK')
          {
              swal({
              position: 'center', 
              type: 'success', 
              confirmButtonClass: 'btn',
              buttonsStyling: false,
              text: '<?php echo $_GET['pseudo']; ?> a bien été bloqué'      
        })
          }
       }
    });
        }
})
  });
});

Attention à ne pas mélanger PHP et Javascript, le javascript doit pouvoir etre isolé dans un fichier .js (donc qui n'interprete pas le PHP).
D'autant que tu as à priori une variable qui se nomme "pseudo" (en JS), je suppose qu'il fait double emploi avec la variable PHP du même nom.

N'oublie pas de retirer le console.log (qui est fait pour le debug).

encore merci pour tout j'ai encore quelques petites modifs à faire mais ça fonctionne c'est deja ça