AJAX récupération variable en PHP sans rechargement de la page

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • AJAX récupération variable en PHP sans rechargement de la page

    Bonjour,

    J'ai une page :
    . index.php?option=com_daglink&view=personnes&Itemid =398&lang=fr

    A partir de cette page, je souhaite envoyer par GET au moyen d'une balise A HREF une variable sans la passer par l'URL et l'afficher dans la page d'origine sans rechargement de la page.

    A ce titre :
    . Le lien <a href ... inclut la variable (data-value) à transmettre (exemple avec une valeur 5)
    . Dans le script AJAX / GET, la variable est bien récupérée (cf les deux alertes incluses), la page de réception est bien celle d'origine

    Par contre, l'appel par GET dans la DIV "résultat" ne récupère pas la variable.

    Le code

    Code HTML:
    <?php
    \defined('_JEXEC') or die;
    
    use Joomla\CMS\HTML\HTMLHelper;
    use Joomla\CMS\Language\Text;
    use Joomla\CMS\Layout\LayoutHelper;
    use Joomla\CMS\Router\Route;
    
    HTMLHelper::_('jquery.framework');
    ?>
    
    <div>
    <a href="#" id="lien" data-value="5">Clic pour envoi data-value</a>
    
    
    <script>
        $(document).ready(function(){
            $("#lien").click(function(e){
                e.preventDefault();
    
                // Récupération valeur data-value
                var aaaValue = $(this).data("value");
    
                // Alerte
                alert("alerte 1 valeur aaaValue : " + aaaValue);
    
                // Variable, requête AJAX vers même page
                $.ajax({
                    url: "index.php?option=com_daglink&view=personnes&Itemid=398&lang=fr",
                    type: "GET",
                    data: { aaaValue: aaaValue },
                    success: function(response) {
                        // Affichage réponse dans div #resultat
                        $("#resultat").html(response);
                    }
                });
                // Alerte 2
                alert("alerte 2 valeur aaaValue : " + aaaValue);                       
            });
        });
    </script>
    
    <div id="resultat">
        <?php
        // Affichage de $aaaValue après requête AJAX
        if(isset($_GET['aaaValue'])){
            $aaaValue = htmlspecialchars($_GET['aaaValue']);
            echo "<p>Variable AAAVALUE transmise : $aaaValue</p>";
        } else {echo 'Variable non transmise';}
        ?>
    </div>
    
    </div>
    Pouvez-vous m'indiquer mon erreur et, comment la corriger.

    Merci d'avance

    Philippe

  • #2
    Bonjour,
    Une aide pour le codage : ChatGPT.
    Ce n'est pas parfait, mais cela peut fournir de bonnes pistes !
    Exemple de la réponse fournie en faisant un copié collé de toute ta question :

    Réponse de ChatGPT :
    Il semble que votre code ait quelques problèmes. Voici quelques corrections et explications :
    1. Vous utilisez htmlspecialchars($_GET['aaaValue']) pour récupérer la variable dans la page de réception, mais dans votre requête AJAX, vous envoyez la variable avec le nom aaaValue, donc vous devez la récupérer avec $_GET['aaaValue'], pas $_GET['data-value'].
    2. Vous avez une erreur de syntaxe JavaScript dans votre code. Lorsque vous envoyez la requête AJAX, vous n'utilisez pas la variable aaaValue pour inclure sa valeur dans la requête. Vous devriez utiliser aaaValue au lieu de data-value.

    Voici le code corrigé :

    Code:
    <?php
    \defined('_JEXEC') or die;
    
    use Joomla\CMS\HTML\HTMLHelper;
    use Joomla\CMS\Language\Text;
    use Joomla\CMS\Layout\LayoutHelper;
    use Joomla\CMS\Router\Route;
    
    HTMLHelper::_('jquery.framework');
    ?>
    
    <div>
        <a href="#" id="lien" data-value="5">Clic pour envoi data-value</a>
    
        <script>
            $(document).ready(function(){
                $("#lien").click(function(e){
                    e.preventDefault();
    
                    // Récupération valeur data-value
                    var aaaValue = $(this).data("value");
    
                    // Alerte
                    alert("alerte 1 valeur aaaValue : " + aaaValue);
    
                    // Variable, requête AJAX vers même page
                    $.ajax({
                        url: "index.php?option=com_daglink&view=personnes&Itemid=398&lang=fr",
                        type: "GET",
                        data: { aaaValue: aaaValue },
                        success: function(response) {
                            // Affichage réponse dans div #resultat
                            $("#resultat").html(response);
                        }
                    });
                    // Alerte 2
                    alert("alerte 2 valeur aaaValue : " + aaaValue);                      
                });
            });
        </script>
    
        <div id="resultat">
            <?php
            // Affichage de $aaaValue après requête AJAX
            if(isset($_GET['aaaValue'])){
                $aaaValue = htmlspecialchars($_GET['aaaValue']);
                echo "<p>Variable AAAVALUE transmise : $aaaValue</p>";
            } else {
                echo 'Variable non transmise';
            }
            ?>
        </div>
    </div>

    Avec ces corrections, le code devrait maintenant récupérer correctement la variable envoyée via AJAX et l'afficher dans la section resultat sans rechargement de la page.

    Cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Bonjour,

      Merci de t'être intéressé à mon problème.

      J'avais également eu recours à CHATGPT à de nombreuses reprises mais, les réponses étaient inopérantes.

      En définitive, j'ai résolu mon problème en faisant :
      . passer la variable par OPERATOR dans l'URL,
      . récupérant la variable OPERATOR par GET dans le fichier de destination

      Très cordialement

      Philippe

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X