Partage
  • Partager sur Facebook
  • Partager sur Twitter

actualiser certains block d'une page web

php/jQuery

    16 mars 2018 à 22:19:51

    bonsoir a tous,

    je suis entrain de mettre en pratique les notions que j'ai appris sur ce site en développant un site e-commerce et je bute depuis trois jours sur l'actualisation automatique d'une variable(côté client) sans actualiser toute la page.j'ai respecté du mieux que j'ai pu l'architecture MVC

    voici mon arborescence

    -contrôleur

          *  frontend

          *  backend

    -css

    -font

    -images

    -js

    -model

        *  frontend

        *  backend

    -view

        *  frontend

            -template

       * backend

          -template

    index.php qui est mon routeur

    pour mes vues j'ai utilise ob_start() et ob_get_clean() pour stocker les lignes de code dans une variable que je charge dans le template.

    le souci est au niveau du panier ou il y a ceci (0). quand je clique sur un bouton pour ajouter un produit au panier,cela s'ajoute bien mais la valeur 0 ne change pas sauf si j'actualise la page et j'aimerais bien évité cela. pour résoudre ce problème j'ai lu le cours du professeur Nassim Kebbani (un site web dynamique avec jQuery) sur l'utilisation d'AJAX.mais je ne parviens pas a traite ce que renvoi mon code php vu que tout passe par le routeur et c'est lui qui appel les différentes fonctions du contrôleur.

    voici mon code jQuery :

    jQuery(document).ready(function(){
        $('.addPanier').click(function(e){
            e.preventDefault();
            $.ajax({
                    url : $(this).attr('href'),
                    type : 'GET',
                    dataType : 'html',
                    success : function(code_html,status){
                            },
                    complete : function(resultat,stauts){
                                   
                            }
            });
                        });
    });

    quand je fais console.log(code_html) ou console.log(resultat) et que j'utilise l'inspecteur,je vois que code_html ou resulat contient toute ma page web (tout le code de la page  affiché). avec alert(typeof resultat) j'obtiens [objet Objet] ce qu'elle type d'objet?

    comment puis je faire pour résoudre ce problème et merci d'avance pour vos réponses.


    • Partager sur Facebook
    • Partager sur Twitter
      17 mars 2018 à 6:20:43

      Salut,

       $(this).attr('href')

      La page en question retourne t'elle bien uniquement le block que tu souhaite raffraichir ?

      • Partager sur Facebook
      • Partager sur Twitter

      Développeur PHP / Symfony en Freelance

        17 mars 2018 à 9:01:02

        bonjour romain

          non pas du tout cela retourne toute la page. je m'explique le lien en question contient ceci  index.php?v=panier&l=libele&q=qte&p=prix

            si v=panier le routeur appelle la fonction dans le  contrôleur qui gère le panier

        else if ($_GET['v'] == 'panier')
        	{
        	$action = (isset($_POST['action'])? $_POST['action']:  (isset($_GET['action'])? $_GET['action']:null )) ;
        	$l = (isset($_POST['l'])? $_POST['l']:  (isset($_GET['l'])? $_GET['l']:null )) ;
        	$p = (isset($_POST['p'])? $_POST['p']:  (isset($_GET['p'])? $_GET['p']:null )) ;
        	$q = (isset($_POST['q'])? $_POST['q']:  (isset($_GET['q'])? $_GET['q']:null )) ;
        		listpanier($action,$l,$p,$q);
        	}

        voici le contenu de la fonction lispanier() dans le controleur

        	//fonction pour gere l'affichage du panier	
        function listpanier($action,$l,$p,$q)
        	{
        		$erreur = false;
        		if(!in_array($action,array('ajout', 'suppression', 'refresh')))
        			{
        				$erreur=true;
        				}
        		//Suppression des espaces verticaux
        			 $l = preg_replace('#\v#', '',$l);
        		 //On verifie que $p soit un entier
        			 $p = intval($p);
        		//On traite $q qui peut etre un entier simple ou un tableau d'entier
        		if (is_array($q)){
        			 $QteArticle = array();
        			$i=0;
        		 foreach ($q as $contenu){
        				 $QteArticle[$i++] = intval($contenu);
        				 }
        			 }
        		 else {
        			$q = intval($q);
        				}
        		if (!$erreur){
           switch($action){
              Case "ajout":
                 ajouterArticle($l,$q,$p);
                 break;
        
              Case "suppression":
                 supprimerArticle($l);
                 break;
        
              Case "refresh" :
                 for ($i = 0 ; $i < count($QteArticle) ; $i++)
                 {
                    modifierQTeArticle($_SESSION['panier']['libelleProduit'][$i],round($QteArticle[$i]));
                 }
                 break;
        
              Default:
                 break;
           }
        }	
        	$total= MontantGlobal();
        	$item = ItemPanier();//c'est cette fonction qui gere la variable qte panier (0)
        		if(!@(require 'view/frontend/panier.php'))
        			{	
        				header : 'index.php';
        			}
        	}




        • Partager sur Facebook
        • Partager sur Twitter
          17 mars 2018 à 10:33:40

          Bas alors je comprends pas ce que tu veux faire...si l'URL en question est supposé de retourner toute la page il est normal que dans tes console.log tu ais toute la page...
          • Partager sur Facebook
          • Partager sur Twitter

          Développeur PHP / Symfony en Freelance

            17 mars 2018 à 11:19:02

            justement je ne veux pas recevoir toute la page mais juste le block qui contient ma donnee

            voici la fonction qui compte la quantite de produit dans le panier

            function ItemPanier(){
               $item=0;
                 if(!isset($_SESSION['panier']['libelleProduit']))
            		{
            			$_SESSION['panier']['libelleProduit'] = array();
            		}
            	else {	
            			$item = count($_SESSION['panier']['libelleProduit']);
            				}
            			return $item;
            est t'il possible de faire que cette fonction me renvoi du code html que je peux utiliser dans ma requête ajax

            -
            Edité par netedem 17 mars 2018 à 11:29:38

            • Partager sur Facebook
            • Partager sur Twitter
              17 mars 2018 à 11:47:19

              Dans ce cas la passe par une autre url qui elle aura pour role de te retourner la partie de la page que tu veux.

              Car passer par la même url pour récupérer toutes une page ou juste une partie de la page c'est pas super...

              • Partager sur Facebook
              • Partager sur Twitter

              Développeur PHP / Symfony en Freelance

              actualiser certains block d'une page web

              × 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