IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Récupérer le traitement effectué par une page PHP appelé en AJAX


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut [AJAX] Récupérer le traitement effectué par une page PHP appelé en AJAX
    Bonjour,

    c'est vraiment un sacré merdier AJAX pour un débutant qui s'y colle.
    J'ai bien compris le mécanisme global mais quand il s'agit d'appliquer la chose, ne serait-ce qu'à un petit exemple, rien ne va plus.

    En gros, je voulais tester un exemple simple en reprenant ce "pattern":
    http://www.w3schools.com/ajax/ajax_serverscript.asp
    http://www.w3schools.com/ajax/ajax_server.asp

    En fait, au lieu d'avoir un formulaire et d'afficher l'heure, je souhaite appeler une page .php effectuant un accès à une BDD MySQL, et compter le nombre d'entrées dans une table. Je souhaite donc récupérer ce nombre, puis que cette valeur soit "retransmise" par la page .html appelante, basé sur un appel Ajax / JScript.

    Voici ma page TestAjax.html qui fait appel à la page NumberMembers.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <html><body>
    
    <script type="text/javascript">
    
    function ajaxFunction()
    {var xmlHttp;
    try
      {  // Firefox, Opera 8.0+, Safari  
      xmlHttp=new XMLHttpRequest();  }
    catch (e)
      {  // Internet Explorer  try
        {    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    }
      catch (e)
        {    try
          {      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");      }
        catch (e)
          {      alert("Your browser does not support AJAX!");      return false;      }    }  }
      xmlHttp.onreadystatechange=function()
        {
        if(xmlHttp.readyState==4)
          {
    	  var data = xmlHttp.responseText;   // ??? how to retrieve the result from the .php process
    	  var newline = document.createElement("div");
          document.getElementById('answer').appendChild(newline);
    	  var txt = document.createTextNode(data);
    	  newline.appendChild(txt);
          }
        }
      xmlHttp.open("GET","NumberMembers.php",true);
      xmlHttp.send(null);  }
      </script>
    
     HOW MANY MEMBERS?
     <p> 
    <a href="javascript:ajaxFunction();">
    Tell me:</a> 
    <p>
    <div id="answer"></div>
    </body>
    </html>

    Et voici donc mon code PHP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
     
                    // connecting to the Database
                    $con = mysql_connect("localhost","root","root");
                    if(!$con)
                    {
                      die('Internal error - Could not connect: ' . mysql_error());
                    }
                    // select database
                    mysql_select_db("wkDB", $con);
                    
                    $result = mysql_query("SELECT count(*) FROM members_login");
                    
    // QUE FAIRE A PARTIR DE LA?  
    // je précise: un echo $result me renvoit 
     
    ?>

    Le problème se trouve après ma requête SQL. Quelle est la syntaxe précise pour récupérer mon SELECT count ?
    Je précise que echo $result; m'affiche "Resource id #3" et non pas 1,2, ou 300...

    Ensuite? comment faire pour que ce résultat vienne se greffer dans ma page .html appelante, au niveau du <div id="answer"> ? Je pensais que c'était bien préciser dans ma fonction onReadyStateChange.... Apparemment non.


    Merci de votre aide pour me répondre dans mon cas précis, puis dans un deuxième, m'expliquer plus généralement comment je dois conduire ce couplage entre un appel Ajax et un traitement PHP. C-a-d comment s'y prendre si j'ai plusieurs types de données, plusieurs résultats php à retourner sur ma page appelante?


    Cordialement,

    B.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Au niveau Ajax ça m'a l'air pas mal, cela devient donc plus un
    problème php/mysql

    $result représente un resultset il faut en extraire l'enregistrement
    avec par exemple $rec = mysql_fetch_assoc($result);
    puis faire echo $rec['count(*)']; pour produire une sortie avec
    la valeur.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Bonjour/bonsoir,

    merci pour la réponse. Effectivement merci pour l'aide concernant la partie PHP, cela marche mieux en faisant comme décrit.
    Donc si je lance directement ma page NumberMembers.php sur mon serveur local, j'ai bien la bonne valeur affichée.

    Maintenant le *gros* soucis, le gros du problème réside dans l'aspect Ajax de l'appel depuis ma page TestAjax.html, dont j'ai donné le code.

    Je travaille en localhost, avec MAMP (MySQL Apache PHP pour mac - un easyPHP en mieux on va dire). Quand je lance ma page TestAjax.html et que je clique sur mon lien "tell me", la barre de status de Firefox indique javascript:ajaxFunction(); qd je survole le lien et clique, mais rien ne se passe.


    Pourquoi ? Aidez-moi à comprendre....

    Merci.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    problème non résolu.
    Je suis un peu paumé pourriez-vous m'aider à comprendre mon erreur?
    N'hésitez pas à me demander plus de précisions si besoin; mais je pense que tout a été dit.

    Merci d'avance!

  5. #5
    Membre régulier Avatar de eracius
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 81
    Points
    81
    Par défaut
    A la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:ajaxFunction();">
    Essaye plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onClick="javascript:ajaxFunction();">
    Bon courage.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Non, celà ne fonctionne pas mieux. En fait, ce n'est pas un problème de syntaxe à mon avis.

    Le problème tel que je l'identifie, c'est le lien que je fais en Ajax avec mon objet xmlHttp :

    xmlHttp.open("GET","NumberMembers.php",true);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    xmlHttp.onreadystatechange=function()
        {
        if(xmlHttp.readyState==4)
          {
    	  var data = xmlHttp.responseText;
    	  var newline = document.createElement("div");
          document.getElementById('answer').appendChild(newline);
    	  var txt = document.createTextNode(data);
    	  newline.appendChild(txt);
          }
        }

    Ce que je vois avec DOM Inspector après avoir cliqué sur mon fameux lien à partir duquel j'injecte une requête Ajax, c'est que mon nouveau noeud div qui devrait être créé comme étant enfant du noeud existant div id="answer" (dans ma page html appelante) n'est tout simplement pas créé.

    Autrement dit, c'est comme si mon bloc if n'était pas exécuté. Ca paraît invraisemblable puisque d'une part le statut du navigateur affiche "Terminé", et que, d'autre part, il s'agit d'une pauvre requête database lancée par ma page php, qui s'exécute instantanément. J'ai bien lancé ma page .php manuellement et tout est OK.


    Donc, vous les experts d'Ajax, ne me dites pas que ce que je souhaite faire n'est pas possible ??! Je pensais que ca aurait été enfantin pour vous de déceler mon erreur......


    A+

  7. #7
    Membre régulier Avatar de eracius
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 81
    Points
    81
    Par défaut
    Perso je ne suis pas un expert AJAX mais un utilisateur occasionnel qui passait dans le coin ^^

    Je vois potentiellement deux choses à regarder là, soit l'url vers ton fichier .php serait erroné mais je pense que tu as du tester, soit tu peux afficher tous les états de xmlhttprequest pour voir où ça merde.

    Utilise ça :

    Les états de readyState sont les suivants (seul le dernier est vraiment utile):
    0: non initialisé.
    1: connexion établie.
    2: requête reçue.
    3: réponse en cours.
    4: terminé.

    Bon courage.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Bon je reviens par ici pour vous dire que là je suis fait....... exaspéré, perplexe.
    J'ai cherché des tutos/exemples d'interactions Ajax/PHP sur le net, ce qui m'a entre autre permis d'épurer et de mieux structurer mon exemple.

    Malheureusement, je n'arrive à aucun résultat et ce n'est pas normal. Pas normal parce que je reprends les exemples des autres tutos à la virgule près (que j'ai testé et qui marchent en local avec mon serveur apache, sql, php).
    Je remplace juste le traitement de la page php par une requête toute bête SQL, qui par ailleur, a été testé en dehors de l'appel Ajax. Le bon résultat est bien affiché par le echo.

    Voici ma page TestAjax.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <html><body>
    
    <script language="javascript" type="text/javascript">
    
    function ajaxFunction()
    {
    	var xmlHttp = getHTTPObject();
    
          if (xmlHttp != null) {
           xmlHttp.open("GET","NumberMembers.php",true);
      	   xmlHttp.send(null); 
           xmlHttp.onreadystatechange = queryResult;
          }
    }
    
    
    function queryResult()
    {
        if(xmlHttp.readyState==4)
          {  
    	  document.getElementById('answer').value = xmlHttp.responseText;
          }
    	  else if(xmlHttp.readyState==3)
    	  {
    	  var newline = document.createElement("div");
          document.getElementById('content').appendChild(newline);
    	  var txt = document.createTextNode('<br>Processing query...');
    	  newline.appendChild(txt);
    	  }
    }
    
       
      
      // xmlHttpObject Definition
      function getHTTPObject(){
     
          if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
    
          else if (window.XMLHttpRequest) return new XMLHttpRequest();
     
          else {
      
          alert("Your browser does not support AJAX.");
          return null;
     
          }
     
          }
      
      </script>
    
     HOW MANY MEMBERS?
     <p>
    <form name="countMembers">
    <input type="button" onClick="ajaxFunction();" value="Tell me"/>
    &nbsp; &nbsp; &nbsp; &nbsp;
    <input type="text" size="5" id="answer"/>
    </form>
    <div id="content"></div>
    </body>
    </html>

    Ainsi que ma page NumberMembers.php (situé dans le même répertoire que TestAjax.html):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    
    		// connecting to the Database
    		$con = mysql_connect("localhost","root","pass");
    		if(!$con)
    		{
    		  die('Internal error - Could not connect: ' . mysql_error());
    		}
    		// select database
    		mysql_select_db("MaDB", $con);
    		
    		$result = mysql_query("SELECT count(*) FROM members_login");
    		$rec = mysql_fetch_assoc($result);
    		echo $rec['count(*)'];  // me renvoie le nombre de membres: OK
    ?>


    Un grand merci à ceux qui me diront pourquoi je n'ai aucun résultat en cliquant sur mon bouton de formulaire. Ni de "processing..." ni aucun résultat. RIEN.



    EDIT >>>
    Le bouton mouline dans le vide les gars. J'ai coupé mon serveur local, donc si jamais la page php était réellement appelée par le clic sur le bouton, j'aurais eu une erreur affichée.

    Donc :
    <input type="button" onClick="ajaxFunction();" value="Tell me"/>

    ne plaît pas? Pourquoi ? c'est quoi la blague là? Dans l'exemple qui marche c'est identique...

  9. #9
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Une remarque concernant ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function ajaxFunction()
    {
    	var xmlHttp = getHTTPObject();
     
          if (httpObject != null) {
           xmlHttp.open("GET","NumberMembers.php",true);
      	   xmlHttp.send(null); 
           httpObject.onreadystatechange = queryResult;
          }
    }
    Tu instancie l'objet dans la variable xmlHttp et ensuite tu compare une
    autre variable httpObject ?

    D'autre part, la callback 'queryResult' n'étant pas dans la fonction 'ajaxFunction',
    il n'y a pas de 'closure' donc la variable xmlHttp n'est pas visible pour 'queryResult'.

    La callback est appelée avec l'instance d'XMLHttpRequest en paramètre alors
    exploite le, par exemple ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function queryResult(xmlHttp)
    {
        if(xmlHttp.readyState==4)
        ...
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    MMh, désolé pour celà, je vais modifier le code de mon dernier message sur le forum, considérez qu'il s'agit d'un mauvais copier/coller en ce qui concernant les noms de variable.

    Par contre pour le paramètre à ma fonction queryResult(), je n'en ai pas mis tout simplement car il n'est jamais mis dans les exemples que je rencontre sur le net. Et pourtant, il s'agit également de fonctions indépendantes. Etrange il est vrai.

    J'ai effectué cette modif', mais ca ne donne tjrs rien.
    ???

  11. #11
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Il te faut tracer chaque étape, as-tu FireFox avec l'extension FireBug installée ?
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  12. #12
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Ok je vais l'installer. Je ne l'avais pas et je vérifiais certains paramètres avec DOMInspector.
    Je vous tient au courant si j'ai des pistes.
    Dans le même temps, si quelqu'un trouve la clé de l'énigme, n'hésitez pas!

    merci
    A+

  13. #13
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Ok.
    Ca marche.

    J'avais une erreur "xmlHttp not defined" , et en fait j'ai modifié la fonction getHTTPObject pour rendre la variable globale, et ca passe NICKEL.

    Donc en gros:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function getHTTPObject(){
     
          if (window.ActiveXObject) 
    	  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
     
          else if (window.XMLHttpRequest)
    	  xmlHttp = new XMLHttpRequest();
     
          else {
      	  xmlHttp = null;
          alert("Your browser does not support AJAX.");
          }
     
     	  return xmlHttp;
          }

    Ca me paraît qd même débile dans le sens où mon appel était clairement désigné depuis ma AjaxFunction():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var xmlHttp = getHTTPObject();
    Bref, super outil ce FireBug, et Ajax me paraît très délicat....!

  14. #14
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Non, marcha a raison et ça n'a rien de débile : lorsque tu entres dans ta fonction de rappel, le contexte est 'window'. Il faut donc que dans ce contexte, les variables que tu utilises soient connues. Or, xmlHttp est une variable locale à la fonction ajaxFunction(). Pour la récupérer, la solution conseillée est de lé mémoriser dans la fermeture (closure, en anglais) de ta fonction de rappel. L'autre solution est en effet de rendre cette variable globale mais en général, on évite de 'polluer' l'espace global.

    Autre chose : tu fais un sendRequest avant d'enregistrer ta fonction de rappel, ça me semble un peu casse-gueule. Mieux vaut enregistrer la fonction de rappel avant d'appelr le serveur

    Donc, en reprenant ton code comme ceci et sans variable globale, tu devrais au moins voir un message de confirmation donc pouvoir aussi traiter ton AJAX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function ajaxFunction() {
      var xmlHttp = getHTTPObject();
      if (xmlHttp != null) {
        xmlHttp.open("GET","NumberMembers.php",true);
    		xmlHttp.onreadystatechange = function(){ queryResult(xmlHttp); };
    		xmlHttp.send(null); 
      }
    }
     
    function queryResult(xhr) {
     	if ( xhr.readyState == 4 ) {
    	 	alert("J'aime AJAX et je me rase tous les matins avec le DOM");
      }
    }
    Si ça ne marche pas, le problème vient d'ailleurs : objet xmlHttp invalide, erreur côté serveur, etc.


    [edit : croisement de réponses... Je modifie un peu celle-ci pour adequation...]

  15. #15
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Ok Herode merci, c'est noté!
    Ta syntaxe me plaît bien.

  16. #16
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par Herode Voir le message
    L'autre solution est en effet de rendre cette variable globale mais en général, on évite de 'polluer' l'espace global.
    J'ajouterai à ceci qu'en ce qui concerne Ajax il faut éviter d'avoir l'instance
    de XmlHttpRequest en global car il n'est pas rare d'avoir des requêtes multiples,
    donc plusieurs instances d'XmlHttpRequest. Donc la solution de Herod est meilleure.

    A noter encore que dans certains cas c'est assez élégant de se passer
    d'une fonction callback extérieure et d'écrire le code ainsi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function ajaxFunction() {
      var xmlHttp = getHTTPObject();
      if (xmlHttp != null) {
        xmlHttp.open("GET","NumberMembers.php",true);
        xmlHttp.onreadystatechange = function() { 
            if (  xmlHttp.readyState == 4 ) {
    	  alert("J'aime AJAX et je me rase tous les matins avec le DOM");
            }
        };
        xmlHttp.send(null); 
      }
    }
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  17. #17
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 10
    Points
    10
    Par défaut

    Je pense que ton problème provient de l'appel à ton ton fichier php via Ajax...
    Tu dois préciser une URL dans la fonction open et non le nom du fichier...
    open(mode, url, boolean [,login, password])
    mode: type de requête, GET, POST, HEAD et autres méthodes de http.
    url: le chemin du fichier.
    boolean: true (vrai, asynchrone) / false (faux, synchrone).
    optionellement, un login et un mot de passe comme argument supplémentaires.


    Donc par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        currentURL = URL_BASE + 'getTruc.php';
        currentURL += '?start=' + displayOffset;
        currentURL += '&count=' + NB_ROWS;
        currentURL += '&group=' + selectGroup;
        xhr = initAjax();
        xhr.onreadystatechange = updateDisplay;
        xhr.open("GET",currentURL, true);
        xhr.send(null);
    Conseil: installe Firebug sous Firefox, il te permet de voir la requète
    XMLHttpRequest pour ton debug.

    Bon courage.
    Cordialement.
    Stef!

  18. #18
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par blstef Voir le message

    Je pense que ton problème provient de l'appel à ton ton fichier php via Ajax...
    Tu dois préciser une URL dans la fonction open et non le nom du fichier...
    Le nom du fichier est un url relatif tout a fait valable.

    Citation Envoyé par blstef Voir le message
    Donc par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        currentURL = URL_BASE + 'getTruc.php';
        currentURL += '?start=' + displayOffset;
        currentURL += '&count=' + NB_ROWS;
        currentURL += '&group=' + selectGroup;
        xhr = initAjax();
        xhr.onreadystatechange = updateDisplay;
        xhr.open("GET",currentURL, true);
        xhr.send(null);
    Attention, ta composition de ta query string n'encode pas les caractères spéciaux
    éventuellement présents dans tes valeurs !

    Citation Envoyé par blstef Voir le message
    Conseil: installe Firebug sous Firefox, il te permet de voir la requète
    XMLHttpRequest pour ton debug.
    ça a été dit plus haut, merci de lire le post avant de répondre
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interrompre le traitement effectué par une DLL
    Par Négrier dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2015, 00h08
  2. Jquery dans une page PHP appelée par CRON
    Par nicolas2603 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 17/02/2014, 16h18
  3. Réponses: 7
    Dernier message: 09/03/2009, 20h12
  4. [XML] La réception du doc XML par une page PHP
    Par naima2005 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 13/05/2006, 23h16
  5. [Système] récupérer l'HTML généré par ma page PHP
    Par saint-pere dans le forum Langage
    Réponses: 2
    Dernier message: 27/09/2005, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo