Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'ai regardé le tuto de Grafikart sur le panier.

app.js

(function($){
  $('.ajouter_panier').click(function(event){
      event.preventDefault();
      $.getJSON($(this).attr('href'),function(data){
        if(data.error){
          alert(data.message);
        }else{
          if(confirm(data.message + ' . Voulez-vous consulter votre panier ?')){
            location.href='panier.php';
          }else{
            //On injecte à la balise nb_jeux, la valeur nb_jeux
            $('#nb_jeux').empty().append(data.nb_jeux);
            //On injecte à la balise prix_total, la valeur prix_total
            $('#prix_total').empty().append(data.prix_total);
          }
        }
      });
      return false;
  });
})(jQuery);

panier_ajouter

<?php
require 'header.php';
require 'footer.php';
$json = array('error' => true);
  //Si le jeu existe bien dans le panier
  if(isset($_GET['id'],$_GET['stock']))
  {
      //On récupère l'ensemble des jeux
      $reqpanier=$bdd->prepare('SELECT idjeu, stock FROM jeux WHERE idjeu=:idjeu AND stock=:stock');
      //On execute la requête
      $reqpanier->execute(array('idjeu' => $_GET['id'],'stock' => $_GET['stock']));
      //On stocke les éléments dans une variable qui retourne un tableau
      $jeu = $reqpanier->fetchAll(PDO::FETCH_OBJ);

      //Si le jeu n'existe pas
      if(empty($jeu))
      {
        $json['message']= 'Ce jeu n\'existe pas !';
      }
      //ajoute le jeu au panier
      $panier->ajouter($jeu[0]->idjeu,$jeu[0]->stock);
      $json['error'] = false;
      $json['nb_jeux'] = $panier->nb_jeux();
      $json['prix_total'] = $panier->prix_total();
      $json['message']= "Le jeu a bien été ajouté !";
  }
  //Sinon pas de jeu dans le panier
  else
  {
      $json['message']="Vous n'avez pas ajouté de jeu à votre panier !";
  }

//Affiche le résultat du json
echo json_encode($json);
?>

Ce que je veux

j'aimerais l'affichage de la fenêtre de confirmation lors de l'ajout d'un jeu.

Ce que j'obtiens

j'obtiens la page mais à la place de la fenêtre j'ai ceci qui s'affiche,

{"error":false,"nb_jeux":10,"prix_total":199.9,"message":"Le jeu a bien \u00e9t\u00e9 ajout\u00e9 !"}

j'ai changé en utf8 avec meta charset mais rien. Est ce un problème de la methode confirm() ?

4 réponses


PhiSyX
Réponse acceptée

Peut-être que tu as des erreurs au niveau de la console (javascript), as-tu regardé de ce côté là?
(Preserve les logs, au cas où :])

Aussi peut-être que tu ne retournes pas que du JSON, mais aussi du HTML. (Je vois des require, header.php, footer.php)
Ne retourne que ton JSON lorsque tu fais une requête AJAX.

C'est un comportement par défaut des fonctions json, qui échappe les jeux de caractères multi-octets unicode.
Si tu veux désactiver ce comportement, il te faut ajouter une constante prédéfinie de JSON qui est JSON_UNESCAPED_UNICODE.

echo json_encode(...);
// @return {"error":false,"nb_jeux":10,"prix_total":199.9,"message":"Le jeu a bien \u00e9t\u00e9 ajout\u00e9 !"}

echo json_encode(..., JSON_UNESCAPED_UNICODE);
// @return {"error":false,"nb_jeux":10,"prix_total":199.9,"message":"Le jeu a bien été ajouté !"}

Mais normalement ça ne devrait pas te déranger... Si ?

Ou alors j'ai mal compris?

bobazaza
Auteur

En fait normalemen je devrais avoir une fenêtre de confirmation dû à confirm() et je dois cliquer sur valider en js. Mais à la place il retourne ce message donc j'ai l'inpression que la fenêtre d'alerte ne fonctionne pas mais je regardais et je ne vois toujours pas le problème =/

bobazaza
Auteur

Merci ! C'est bon j'ai touvé j'ai le footer je ne le mettais pas en bas .. honte à moi ^^'