Partage
  • Partager sur Facebook
  • Partager sur Twitter

Code html de la page dans réponse XMLHttpRequest

    23 novembre 2024 à 21:55:09

    Bonjour,


    J'ai un fichier functions.js avec une fonction selectSession :

    function selectSession(uid, session, isChecked){
      var xmlhttp;
      xmlhttp = createRequestObject();
      xmlhttp.open('post','sendSelectSession.php',true);
      xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
          var reponse = xmlhttp.responseText;
          //document.getElementById('subProfile').innerHTML = reponse;
          alert(reponse);
        }
      }
      xmlhttp.send("uid="+escape(uid)+"&session="+escape(session)+"&isChecked="+escape(isChecked));
      return false;
    }

    Et le code de la page sendSelectSession.php :

    <?php
    session_start();
    header('Content-type: text/html; charset=utf-8');
    require("config.php");
    echo "TEST";
    $con = null;
    ?>

    Lorsque la fonction est appelée, j'ai une popup qui affiche tout le code html de la page d'appel au lieu de "TEST".
    A noter, j'utilise d'autres fonctions construites de la même manière qui fonctionnent correctement.

    Auriez-vous une idée svp ?



    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2024 à 12:11:12

      Salut

      Tu parles de code HTML de la page, mais de laquelle exactement, as-tu regardé attentivement ? Parce que ça pourrait simplement être du code HTML d'une page, mais pas celle que tu crois, voire même être le HTML utilisé par Apache pour les pages d'erreur par défaut.
      Est-ce que tu as vérifié que l'adresse utilisée pour l'appel était correcte ? Avec l'onglet « Network » ou « Réseau » des outils de débogage du navigateur.

      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2024 à 19:56:11

        J'ai une page html avec une checkbox qui appelle la fonction selectSession du fichier functions.js.

        Dans l'outil de dév du navigateur (firefox dans mon cas), je vois bien l'appel vers la bonne page php (sendSelection.php), méthode POST, état 200.

        Dans ma popup alert je récupère le code suivant, qui est le code de la page d'appel, à l'exception du premier paramètre de la fonction selectSession qui est vide (mais il n'est pas vide lors de l'appel).

        <!DOCTYPE html>
        <html lang="fr">
           <head>
              <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <meta http-equiv="Cache-Control" content="max-age=259200" />
              <meta property="og:image:height" content="757"/>
              <meta property="og:image:width" content="757"/>
              <meta property="og:type" content="website"/>
              <meta property="og:image:type" content="image/webp"/>
              <title>Saison 2025</title>
              <link rel="preload" href="/functions.js" as="script">
              <link rel="preload" href="/style.css" as="style">
              <link rel="shortcut icon" type="image/png" href="/img/favicon32.png" />
              <link rel="icon" type="image/png" sizes="16x16" href="/img/favicon16.png" />
              <link rel="icon" type="image/png" sizes="32x32" href="/img/favicon32.png" />
              <link rel="icon" type="image/png" sizes="48x48" href="/img/favicon48.png" />
              <link href="/style.css" rel="stylesheet" type="text/css" media="all" />
           </head>
           <body>
              <div id="container">
                 <div id="header">
                    <img src="/img/my-logo.webp" id="header-logo-img"/>
                    <a class="imgLnk" id="header-lnk" href="/profile/guest"><img src="/photo/11717401484.jpg" id="header-profile-img" alt="Image de profil"/></a>
                 </div>
                 <div id="header-info" onclick="javascript:closeInfo(); return false;" style="margin:-2px 0px 0px 0px; padding:0px; visibility:hidden; height:0px; lineHeight:0px"></div>
                 <div id="menu">
                    <span id="menu-ranking"><a class="lnk" href="/ranking">Classement</a></span> |
                    <span id="menu-prog"><a class="lnk" href="/calendar">Programme</a></span>
                    <span id="menu-logout"><a class="imgLnk" href="#" onclick="javascript:logout(); return false;"><img id="menu-logout-img" src="/img/logout.svg" /></a></span>
                    <span id="menu-help"><a class="imgLnk" href="/help"><img src="/img/help.png" id="menu-help-img"/></a></span>
                    <span id="menu-notif"><a class="imgLnk" href="/news"><img src="/img/notif.png" id="menu-notif-img"/></a></span>
                 </div>
                 <div id="msgZone" onclick="javascript:hide('msgZone');"></div>
                 <div id="pari">
                    <div id="submenuProfile">
                       <span id="submenu-profile-active">Stats</span>
                    </div>
                    <div id="subHeaderProfile">
                       <div style="float:left;width:100%; margin-top:10px; line-height:70px;">
                          <div style="float:left; width:25%; margin-left:20px; max-width:90px; text-align:left; font-size:1.7em"><img src="/photo/default/default.png" id="profile-img"/></div>
                          <div style="float:left; width:60%; font-size:1.7em"></div>
                       </div>
                    </div>
                    <div class="clear">&nbsp;</div>
                    <div id="subProfile">
                       <div style="margin-left:25%; float:left;width:20%; margin-top:3px; max-width: 330px;text-align:center;">
                          <input style="float:left; vertical-align:top; width:20px; height:20px;" onchange="javascript:selectSession(,1,1); return false;" type="checkbox" id="isS1" name="isS1" />
                          <label style="float:left; padding-left:3px; font-size:1.0em;" for="isQ2">Q2</label>
                       </div>
                       <div style="float:left;width:20%; margin-top:3px; max-width: 330px;text-align:centerisS2
                          <input style="float:left; vertical-align:top; width:20px; height:20px;" onchange="javascript:selectSession(,2,1); return false;" type="checkbox" id="isS2" name="isS2" />
                          <label style="float:left; padding-left:3px; font-size:1.0em;" for="isSpr">SPR</label>
                       </div>
                       <div style="float:left;width:20%; margin-top:3px; max-width: 330px;text-align:center;">
                          <input style="float:left; vertical-align:top; width:20px; height:20px;" onchange="javascript:selectSession(,3,1); return false;" type="checkbox" id="isS3" name="isS3" />
                          <label style="float:left; padding-left:3px; font-size:1.0em;" for="isRac">RAC</label>
                       </div>
                       <div class="clear" style="margin-bottom:10px;">&nbsp;</div>
                    </div>
                 </div>
              </div>
           </body>
        </html>
        <script type="application/javascript" charset="utf-8" src="/functions.js"></script>



        -
        Edité par FredMichel2 25 novembre 2024 à 19:56:56

        • Partager sur Facebook
        • Partager sur Twitter
          29 novembre 2024 à 10:27:45

          La coloration syntaxique de la ligne 51 devrait attirer ton attention : la balise ouvrante et l'attribut ne sont pas fermés, cela peut poser des problèmes.

          Est-ce que ta page comme le script que tu tentes d'appeler en AJAX sont à la racine du site ?
          As-tu tenté de mettre l'entier de l'URL du script, même si "logiquement" il n'y aurait pas besoin ?

          • Partager sur Facebook
          • Partager sur Twitter
            30 novembre 2024 à 14:11:54

            Merci beaucoup pour ce retour.

            J'ai corrigé au niveau de la ligne 51 mais le problème n'était pas là.

            Mes pages php et le fichier functions.js sont à la racine.

            J'ai modifié pour utiliser l'URL complète avec "https://"  et ça fonctionne... mais je ne comprends pas pourquoi c'est le seul appel qui nécessite l'URL complète.

            Dans le même fichier functions.js, j'ai une fonction très similaire avec un appel sans l'URL complète qui fonctionne parfaitement : xmlhttp.open('post','sendChangeRanking.php',true);

            • Partager sur Facebook
            • Partager sur Twitter
              1 décembre 2024 à 10:20:41

              Sans avoir l'entier du code pour voir les éventuelles différences entre ce qui fonctionne et ce qui ne fonctionne pas, j'ai aussi de la peine à comprendre pourquoi.

              L'UID n'est pas passé à la fonction dans le code que tu nous fournis, je pars du principe que c'est voulu voire que c'est volontairement masqué pour nous, seulement si c'est là la différence avec les appels qui fonctionnent, on a une piste. Je ne suis pas certain que la syntaxe (, unParamètre, etc.) soit correcte en JavaScript, mais j'avoue être un peu hors-course à ce niveau.

              -
              Edité par Ymox 1 décembre 2024 à 10:21:17

              • Partager sur Facebook
              • Partager sur Twitter

              Code html de la page dans réponse XMLHttpRequest

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown