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 :

utilisation simple de xmlhttpRequest


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    le truc c est que si dans ta page en direct dans le navigateur t'as un request vide, tu iras pas bien loin ...

    le code js à l'air correct donc c'est juste un soucis de récupération de ton GET de #### (excuse c'est l heure )

    je re-regarde ton php

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    remet moi tes pages s'il te plait

  3. #3
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    ok mais ca urge pas !

    appel.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
    <?php
    require 'ma_connex.inc.php';
    $results = mysql_query ("SELECT * FROM matable WHERE refer = '".$_GET['refer']."'");
     
    while ($tri = mysql_fetch_array($results))
            {
    ?>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <table>
    <tr><td><?php echo $tri['refer'];?><br>
            <? echo $tri['ord']; ?><br>
            <? echo $tri['type']; ?><br>
            <? echo $tri['nom']; ?><br>
            <? echo $tri['tel']; ?><br>
        </td></tr>
    </table>
    <?
    } 
    mysql_close();
    ?>
    Personnellement, je la trouve tout à fait correcte cette requête et j'en ai consommée des tas comme ça. lllooll

    Je pense que c'est plutôt dans l'index que ça cafouille.
    index.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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     
    	<script type='text/JavaScript'>
     
    	  function mafonction('appel.php?refer=$refer'){ 
          if(xhr_object){ 
           xhr_object.onreadystatechange = function(){ 
          if(xhr_object.readyState == 4 && xhr_object.status == 200){ 
             document.getElementById('mondiv').innerHTML = xhr_object.responseText; 
          } 
                } 
           xhr_object.open("GET","appel.php?refer="+ refer,true); 
           xhr_object.send(null); 
       } 
           else // xhr_objectn'existe pas 
           alert("Probleme !"); 
    }
    	</script>
    </head>
    <body>
    <?php
    // variable de test, existante dans ma table
    $refer="test";
    ?>
    <a href="index.php?refer=$refer">Voir</a>
    <a href="#" onclick="mafonction('index.php?refer=$refer&ord=$ord&type=$type&nom=$nom&tel=$tel')">$refer</a> 
     
    <div id='mondiv'></div>
    </body>
    </html>
    Comme tu peux le voir, j'ai utilisé 2 liens différents pour le test.
    Et pour être sûr, j'ai même attribué une variable à $refer.
    En l'occurence "test" qui existe bien dans ma table....si si !

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    alors,
    enlèves la balise meta de appel car si tu utilises responseText, il faut pas envoyer le retour en xml

    donc appel :
    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
    <?php
    require 'ma_connex.inc.php';
    $results = mysql_query ("SELECT * FROM matable WHERE refer = '".$_GET['refer']."'");
     
    while ($tri = mysql_fetch_array($results))
       {
    ?>
    <table>
    <tr><td><?php echo $tri['refer'];?><br>
            <? echo $tri['ord']; ?><br>
            <? echo $tri['type']; ?><br>
            <? echo $tri['nom']; ?><br>
            <? echo $tri['tel']; ?><br>
        </td></tr>
    </table>
    <?
    }
    mysql_close();
    ?>
    ensuite :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     
       <script type='text/javascript'>
     
         function mafonction(lien){
          if(xhr_object){
           xhr_object.onreadystatechange = function(){
          if(xhr_object.readyState == 4 && xhr_object.status == 200){
             document.getElementById('mondiv').innerHTML = xhr_object.responseText;
          }
                }
           xhr_object.open("GET",lien,true);
           xhr_object.send(null);
       }
           else // xhr_objectn'existe pas
           alert("Probleme !");
    }
       </script>
    </head>
    <body>
    <?php
    // variable de test, existante dans ma table
    $refer="test";
    echo "<a href='appel.php?refer=$refer'>Voir</a>";
    echo "<a href='#' onclick='mafonction(\"appel.php?refer=".$refer."\")'>$refer</a>";
    ?>
    <div id='mondiv'></div>
    </body>
    </html>

  5. #5
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Oui Siddh, mais je viens de me rendre compte qu'en finalité la partie JS ne joue aucun rôle, utilisé de cette façon.

    On est dans le cas présent dans le cadre d'une syntaxe classique PHP (lien+passage de parametre et affichage, sans qu'intervienne la partie JS.

    Je m'explique :
    Déjà seul le lien suivant et fontionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href='appel.php?refer=$refer'>Voir</a>";
    Et la résultante est logique, puisqu'on demande au fichier (appel.php) d'afficher le résultat relatif à $refer.
    Le résultat est d'ailleurs affiché dans appel.php et non pas le <div> du fichier index.

    J'ai supprimé la partie JS pour refaire un test, et j'obtiens la même chose, au demeurant logique, soit l'affichage dans appel.php.
    Donc JS ne remplit pas son rôle.

    C'est qu'on appelle, un retour à la case départ.

  6. #6
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    En résumé, pour confirmer le fait que la partie JS remplit son rôle de "chargement", le résultat issu de la page appel.php devrait s'afficher dans le <div>.
    Dans ce cas de figure, on serait bien dans un contexte xmlhttp.

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    oui on est d'accord mais la le but c est de tester le deuxieme lien

    avec mon code ça donne quoi ?

  8. #8
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    C'est justement ton dernier code que j'ai utilisé, mes derniers commentaires s'y rapportent..

    Aussi dans JS, cette ligne là ne m'inspire pas, je t'avouerais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("GET",lien,true);
    Je ne vois pas trés bien comment js peut interpréter le fait qu'il faut charger tous les éléments relatifs à $refer, et sans connaître l'url.
    Pour cette raison, au départ, je faisais référence à une ligne du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("GET","appel.php?refer=" +refer ,true);
    Ce qui me semblait plus adapté pour le "prechargement".

    Pas évident tout ça !

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick='mafonction(\"appel.php?refer=".$refer."\")'
    on passe l'url en appelant la fonction.

    et dans la fonction on appel ce qu'on reçoit "lien" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function mafonction(lien){
    et ensuite on l'utilise

  10. #10
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Bonsoir Siddh

    Bon, je suis à 2 doigts d'avoir la solution.

    J'ai pu récupérer quelques codes XHR ici et là et que j'ai modifiées.
    Et au lieu de les afficher dans un simple div, je pourrai même les faire apparaître dans une fenêtre, ce qui est encore plus confortable.

    Tu te souviens quand j'évoquais :
    Il est des cas spécifiques où l'utilisation d'un id (auto-incrémenté) est à proscrire car celà ne correspond pas, ou plus à la philosophie de l'application
    Apparemment, celà serait une source de probléme.
    Pour cette raison, la ligne suivante serait forcemment source de non-fonctionnement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("GET","appel.php?refer=" + refer, true);
    Alors que celle-ci est plus viable, puisque id est défini comme un élément unique.
    Ce qui n'est pas le cas pour "refer" étant donné qu'il peut figurer plusieurs dans une table....donc bug !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("GET","appel.php?id=" + id, true);
    J'ai fait des premiers tests en rajoutant un id (unique) dans ma table, et avec ce nouveau code XHR "bidouillé", ça fonctionne.

    Bon, je n'avais pas forcemment besoin de cet id dans ma table, mais je lui pardonnerai.

    La seule chose qui m'emm..", c'est que l'id doit être obligatoirement affiché. (grrrrr)
    Ca ne m'arrange pas qu'il figure dans les résultats de la requête.
    Si j'essaye de le passer dans un type hidden, ca ne marche plus.

    Je vais refaire des tests, et je mettrai ma source.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Utilisation simple d'un objet COM
    Par andrebernard dans le forum C++
    Réponses: 52
    Dernier message: 28/05/2008, 15h21
  2. Utilisation simple d'une mémoire partagée sous linux
    Par dreamteam dans le forum Linux
    Réponses: 1
    Dernier message: 09/02/2007, 17h39
  3. [JMS] Utilisation simple
    Par caballero dans le forum Java EE
    Réponses: 2
    Dernier message: 25/01/2007, 03h04
  4. Utilisation simple d'@@IDENTITY avec asp
    Par Ajrarn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2003, 10h37

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