Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mon deuxieme appel ajax ne marche pas :(

    15 mars 2018 à 14:04:03

    Bonjour tout le monde,

    C'est pour mon projet JS, je dois faire un site de cocktail.
    Dans ce site une fois connecté un bouton apparaît pour pouvoir voir la liste des cocktails, c'est un appel Ajax qui va aller demander à la base de donnée la liste des cocktails et l'afficher, pour mon site il apparaît sous forme de bouton avec dedans le nom du cocktail.
    Ensuite un deuxième appel Ajax va se lancer lorsque nous allons cliquer sur le bouton du cocktail qui va afficher tout les détails du cocktail et c'est là mon problème lorsque l'on clique sur le bouton il va bien avoir l'alert que j'ai mis pour vérifier qu'il rentre dans la fonction click mais c'est tout, je n'ai pas d'erreur et le fichier php dans l'inspection onglet network ne s'affiche pas. Je sollicite votre pour m'aider car je suis dans le désespoir :p

    Voici le fichier js avec les 2 appel Ajax :

    $(document).ready(function () {
    $('#form_ListeCocktail').submit(function () {
    $.ajax({
    url: $(this).attr('action'),
    method: $(this).attr('method'),
    data: $(this).serialize()
    })
    .done(function (result) {
    console.log('result=' + result);
    if (result.est_connecte === false) {
    window.location.reload(true);
    }
    else {
    let listeCocktail2 = ' ';

    for(let i=0; i<result.listeCocktail.length; i++){
    listeCocktail2 += '<br/><button id="' + result.listeCocktail[i].id+
    '" class="cocktail">' + result.listeCocktail[i].titre+
    '</button><br/>'
    }
    $('#listeCocktail').html(listeCocktail2);
    $('.cocktail').click( function () {
    alert('touché');
    $.ajax({
    url: '../json/afficherCocktail.php',
    method: POST,
    data: $(this).attr("id"),
    })
    .done(function (result) {
    console.log('result=' + result);
    if (result.est_connecte === false) {
    window.location.reload(true);
    }
    else{
    let listeDetail = ' ';
    for(let i=0; i<result.listeCocktail2.length; i++){
    listeDetail += result.listeCocktail2[i].titre+ '<br/>'+
    result.listeCocktail2[i].titre+ '<br/>'+
    result.listeCocktail2[i].titre+ '<br/>'+
    result.listeCocktail2[i].titre+ '<br/>';
    }
    $('#listeCocktail').html('<br/>'+ listeDetail + '<br/>');
    }
    })
    });
    }

    })
    .fail(erreurCritique);
    return false;
    });
    }

    Voici le fichier afficherCocktail.php qui renvoie en json ce qu'il a reçu de la base de donnée:

    <?php
    session_start();

    include '../model/modelAfficherCocktail.php';


    $resultat= new stdClass();
    $resultat-> result=true;
    $resultat-> message2='';
    $resultat-> est_connecte = false;



    if(isset($_SESSION['username']) && isset($_SESSION['mdp'])) {

    $resultat-> est_connecte = true;
    $db= connection();
    $resultat-> listeCocktail2 = getCocktail2($_POST['$id']);
    $resultat-> message2='je suis rentré dans afficherCocktail.php';


    }

    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-type: application/json');
    echo json_encode($resultat);

    Voici le fichier Model qui va se connecter à la base de donnée et renvoyé dans afficherCocktail ce qu'il a trouvé dans la base de donnée:

    function requete($id){
    $query ="select *
    from cocktail
    where cocktail join CocktailIngredient on cocktail.id = CocktailIngredient.id_cocktail
    join Ingredient on Ingredient.id = CocktailIngredient.id_ingredient
    where cocktail.id = '$id'";
    //requete pour afficher tout les cocktails
    return $query;
    }

    function selection($dbLink,$query){
    $dbResult = mysqli_query($dbLink, $query);
    return $dbResult;
    }
    function erreur($dbLink,$query){
    echo _('Erreur dans requête').'<br />';
    // Affiche le type d'erreur.
    echo _('Erreur : ') .' mysqli_error($dbLink)' . '<br/>';
    // Affiche la requête envoyée.
    echo _('Requête : ') . $query . '<br/>';
    exit();
    }
    function getCocktail2($id){
    $Tableau = [];
    $dbLink =connection();
    $query =requete($id);
    $dbResult =selection($dbLink,$query);
    if (!($dbResult)) {
    erreur($dbLink,$query);
    }
    else {
    for($y = 0 ; $y < mysqli_num_rows($dbResult) ; $y++)
    {
    $Tableau[]= mysqli_fetch_assoc($dbResult);
    };

    }
    return $Tableau;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      15 mars 2018 à 14:22:17

      Salut,

      S'il n'apparaît pas dans l'onglet network il n'est pas appelé, as tu testé ton lien? Peux ton voir ton formulaire?

      • Partager sur Facebook
      • Partager sur Twitter
        15 mars 2018 à 15:46:18

        Dans le fichier html pour le bouton qui affiche la liste des cocktails j'ai:

        <form style="display: none" id="form_ListeCocktail" method="post" action="/json/listeCocktail.php">
        <input type="submit" class="btn2" value="liste Cocktail">
        </form>

        ensuite j'ai créé une div où les boutons cocktail vont être créé :

        <br><dd><div id="listeCocktail"></div>

        et pour le test du lien j'ai testé et apparemment j'avais bien une erreur dans la requête sql, j'avais mis un where en trop et mis les join au mauvais endroit mais il reste toujours le problème de la requête ajax qui doit être fausse

        -
        Edité par TenchuAzulia 15 mars 2018 à 17:56:37

        • Partager sur Facebook
        • Partager sur Twitter
          16 mars 2018 à 3:01:41

          Regarde du côté de la fonction .fail de ton objet $.ajax
          • Partager sur Facebook
          • Partager sur Twitter
            17 mars 2018 à 19:31:42

            Je sais pas pourquoi mais je n'arrive pas a te répondre en faisant un copier coller de mon code, j'ai créé d'autre compte pour pouvoir te répondre et à chaque fois ça me met comme spam je ne comprends pas

            sinon maintenant l'appel AJAX marche j'avais juste oublié les guillemets sur le POST de méthode -_-'

            Mais maintenant j'ai d'autre problème:

            L'id est undefined et je sais pas comment le récupérer pour le fichier php

            Pour continuer a travailler j'ai forcé l'id dans le fichier php

            Et ça ma permis de me rendre compte que j'arrive a récuperer sur un seul ingredient seulement.

            Sauf que je voudrais récupérer tout les ingredients qui sont relié à l'id du cocktail donc je pense que c'est ma requête SQL qui n'est pas bonne mais je suis nul en requête ce qui fait que tout mes tests sont faux :'(

            voici ma requete SQL actuelle:

            select * from cocktail join cocktailIngredient  on cocktail.id_cock = cocktailIngredient.id_cocktail
                                           join ingredient on ingredient.id_ing = cocktailIngredient.id_ingredient
            where cocktail.id_cock = '$id'

            Ma base de donnée est comme ça :

            cocktail( titre , resume , descriptionCoktail , id_cock )

            ingredient( nom , id_ing )

            cocktailIngredient( id_cock , id_ing )

            je voudrais que ça récupère tout ce qui a dans la table cocktail et la table ingrédient pour l'afficher.

            -
            Edité par AzuliaTenchû 17 mars 2018 à 19:41:11

            • Partager sur Facebook
            • Partager sur Twitter
              18 mars 2018 à 19:36:15

              Pour ton id dans ton fichier php

              $resultat-> listeCocktail2 = getCocktail2($_POST['$id']);

              plutot

              $resultat-> listeCocktail2 = getCocktail2($_POST['id']);

               D'ailleurs avant toute récupération de variable tu devrais vérifier tes valeurs https://secure.php.net/manual/fr/function.filter-input.php

              Test ton sql dans phpmyadmin.

              • Partager sur Facebook
              • Partager sur Twitter

              Mon deuxieme appel ajax ne marche pas :(

              × 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