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

AJAX Discussion :

[AJAX] base javascript --> PHP


Sujet :

AJAX

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Par défaut [AJAX] base javascript --> PHP
    Bonjour,

    Je tente un petit exo pour comprendre comment utiliser l'objet xmlhttprequest. Mon but est simplement de récupérer la largeur de l'écran via javascript puis de l'afficher (ou d'en faire autre chose via PHP éventuellement).

    Voici le code de 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
     
    <!DOCTYPE html>
    <html>
    <header>
        <title>titre</title>
        <script type="text/javascript" src="funcs.js"></script>
     
    <?php
    $width = 0;
    if (isset($_GET["width"])) $width = $_GET["width"];
    else {
        echo '
        <script language="JavaScript"> sendScreenWidth() </script>
        ';
    }
    ?>
    </header>
     
    <body>
    <?php echo $width; ?>
    </body>
    </html>
    puis le code de funcs.js : (la création de l'objet xhr étant copié de wikipedia)
    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
     
    function createXhrObject()
    {
        if (window.XMLHttpRequest)
            return new XMLHttpRequest();
     
        if (window.ActiveXObject)
        {
            var names = [
                "Msxml2.XMLHTTP.6.0",
                "Msxml2.XMLHTTP.3.0",
                "Msxml2.XMLHTTP",
                "Microsoft.XMLHTTP"
            ];
            for(var i in names)
            {
                try{ return new ActiveXObject(names[i]); }
                catch(e){}
            }
        }
        window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
        return null; // non supporté
    }
     
    /* tentative 1:
    function sendScreenWidth() {
        xhr = createXhrObject();
        xhr.open("GET","index.php?width="+screen.width,true);
        xhr.send(null);
    }
    */
     
    // tentative 2 : (marche pas non plus)
    function sendScreenWidth() {
        xhr = createXhrObject();
        xhr.open("GET","index.php",true);
        var data = "width="+screen.width;
        alert(data); // debug
        xhr.send(data);
    }
    L'alert() dans la dernière fonction affiche bien ma largeur d'écran, mais l'echo en php persiste à afficher 0.

    Merci d'avance !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu n'as manifestement pas bien compris à quoi sert AJAX ni comment l'utiliser...
    Te l'expliquer reviendrait à réécrire les tutoriels du site, donc je t'invites à les lire : TUTORIELS AJAX.
    Cela te permettra entre autre de comprendre qu'AJAX permet d'envoyer des informations au serveur et d'en récupérer une réponse. Dans ton cas, tu tu ne traites pas la réponse...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Par défaut
    C'est hélas la réponse à laquelle je m'attendais un peu. Bien sûr que je ne maîtrise pas AJAX, puisque j'ai "commencé" hier par simple curiosité... je demandais juste pourquoi cet exemple encore plus simple que ceux des tutos ne fonctionne pas.

    Cela te permettra entre autre de comprendre qu'AJAX permet d'envoyer des informations au serveur et d'en récupérer une réponse.
    --> oui ça j'avais compris, c'est écrit partout sur le web. Mais comment auto-actualiser une page très concrètement, c'est déjà beaucoup moins renseigné (ou alors je n'ai simplement pas assez cherché, option largement envisageable ^^).

    ça me fait quand même avancer un peu : il faut ajouter une fonction qui comme tu dis traite la réponse, avec "if(xhr.readyState == 4 && xhr.status == 200) ...". Une réponse indiquée comme étant la meilleure sur un autre forum (commentçamarche, je crois) indiquait qu'on peut se passer de cette fonction. D'où mon incompréhension. Enfin merci quand même !

  4. #4
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Tout ce qui est Aspect de Page qui ne demande aucune source extérieur (Script PHP ou autre) ne fait pas appel à de l'AJAX.

    Pour obtenir une largeur d'écran et l'afficher sur la page du Javascript suffit !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Par défaut
    Oui llaffont je suis bien d'accord, c'est pour ça que j'ai précisé qu'il s'agit d'un exercice pour comprendre comment une page php peut s'auto-(r)appeler "silencieusement" avec de nouveaux paramètres.

    Je suis pas encore au bout du tunnel des tutoriaux, mais un jour j'y arriverai ^^ déjà ce soir je teste avec du "onreadystatechange", ça devrait mieux marcher. Sinon bon j'en ai absolument pas besoin dans l'immédiat, c'était une curiosité comme ça. Je marquerai ce fil comme "résolu" d'ici quelques heures/jours.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Ulath0
    --> oui ça j'avais compris, c'est écrit partout sur le web. Mais comment auto-actualiser une page très concrètement, c'est déjà beaucoup moins renseigné (ou alors je n'ai simplement pas assez cherché, option largement envisageable ^^).
    Parce que envoyer une requête et recevoir une réponse peut se faire de façon assez standard et des exemples concrets sont faciles à donner.
    Ensuite, comment utiliser la réponse et l'intégrer dans ta page, ça dépend de beaucoup de choses, donc ça ne peut être que théorique...
    Ceci dit, il n'est pas envisageable de se lancer dans AJAX sans avoir un minimum de connaissances en JavaScript.
    Citation Envoyé par Ulath0
    ça me fait quand même avancer un peu : il faut ajouter une fonction qui comme tu dis traite la réponse, avec "if(xhr.readyState == 4 && xhr.status == 200) ...". Une réponse indiquée comme étant la meilleure sur un autre forum (commentçamarche, je crois) indiquait qu'on peut se passer de cette fonction. D'où mon incompréhension. Enfin merci quand même !
    Ben dans l'absolu, tu peux t'en passer si tu fais une requête synchrone (mais bien que parfois justifié, ça réduit quand même l'intérêt d'AJAX), soit si tu n'attends pas de réponse particulière du serveur, mais même dans ce cas, pouvoir savoir ne serait-ce que si la requête à abouti ou non est suffisamment important pour justifier de prendre en compte la réponse du serveur.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. [AJAX] Tableau Javascript vers PHP
    Par Dédé86 dans le forum AJAX
    Réponses: 3
    Dernier message: 07/06/2009, 14h36
  2. [AJAX] récupérer valeur php pour javascript
    Par affreuxzozo dans le forum AJAX
    Réponses: 4
    Dernier message: 05/05/2009, 11h38
  3. [Télétravail] Développeur PHP - AJAX - MySQL - JavaScript
    Par paradeofphp dans le forum Demandes
    Réponses: 0
    Dernier message: 03/03/2009, 00h08
  4. [Partenaire] Développeur PHP/SQL/AJAX/Smarty/JavaScript
    Par smooky57 dans le forum Autres
    Réponses: 0
    Dernier message: 11/02/2009, 01h31
  5. [AJAX] Compte à rebours PHP Javascript ajax
    Par syl2042 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/08/2007, 18h00

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