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] Que délèguer au client ?


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Par défaut [AJAX] Que délèguer au client ?
    Bonjour à tous,

    Je débute en AJAX (plus ou moins vrai) et j'essaye de l'utiliser le mieux possible.

    Pour moi, un des avantages d'AJAX est d'allèger le traitement serveur en ne demandant pas la regénération entière du code de la page et des traitements qui vont avec à chaque modification sur la page.

    J'avais pris pour habitude, afin d'être cohérent et de pouvoir mes sites utilisables avec ou sans javascript, de créer un petit script PHP générant juste la partie de la page à modifier et de l'utiliser indifféremment avec ou sans javascript.

    C'était ce script qui générait le code html et le code était directement inséré en innerHTML dans l'élement cible.

    A force de me renseigner, j'ai vu que l'utilisation d'innerHTML était déconseillée, et puis j'ai découvert JSON qui me permet de faire tous les traitements concernant la mise en forme des données coté client.

    On arrive (enfin !!) à mon interrogation. Si j'effectue un traitement des données coté client, je ne peux plus utiliser un script commun pour les utilisateurs avec ou sans javascript.

    Faut-il toujours délèguer la création du code html coté client en ajax, ou est-il préférable parfois de générer une partie du code HTML coté serveru pour le renvoyé en dur ?

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    et désolé mais je vais commencer par une question en retour
    Qu'entends-tu par
    Citation Envoyé par Difré91 Voir le message
    Si j'effectue un traitement des données coté client, je ne peux plus utiliser un script commun pour les utilisateurs avec ou sans javascript.
    On dirait que tu penses avoir un fonctionnement Ajax pour les utilisateurs ayant Javascript d'activer et un autre fonctionnement pour les autres (avec Javascript désactivé, donc)
    Je voudrais juste vérifier qu'on est bien d'accord sur un point : l'utilisation d'Ajax implique l'activation de Javascript, tu es bien d'accord ?

    Si oui, peux-tu reformuler ta question ?

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Par défaut
    Bon, aujourd'hui était la première journée de grosse chaleur, j'ai donc du mal à mettre mes idées dans le bon ordre. (j'avais surtout la flemme de faire des exemples concrets)

    Pour répondre à ta question, je ne considère pas AJAX comme un langage et je suis entièrement d'accord, cela nécessite Javascript.
    Mais cela nécessite aussi (en bon chrétien charitable), de proposer une solution de secours en cas de javascript non activé.

    Donc, tout repose là dessus, en général, ma solution de repli utilise le même script PHP (fichier PHP, c'est pas parce que je marque script que je pense Javascript) que la solution AJAX.

    Exemple :

    Mon bout de code HTML/PHP (ma page d'affichage quoi !) à remplir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div id="zoneTexte">
       <?php include('test.php'); ?>
    </div>
    Le code PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
      include('fichierOuQuiALaDefinitionDObjet.php');
      $objet = new Objet();
      echo "<span>$objet->calculComplique()</span>";
    ?>
    Le code Javascript (jQuery en l'occurence) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      $('#zoneTexte').load('test.php');
    Bon, tout cela est très approximatif, aussi je vous demande de ne pas en tenir rigueur, surtout que ma question ne vise pas à faire fonctionner quelque chose, je sais faire, mais à savoir comment le faire le mieux possible.

    Donc, ça c'était comme je procédait avant, et donc si je devait ajouter des <span> dans mon <div id="zoneTexte">, ils étaient générés coté serveur par le fichier test.php et envoyés au client pour remplir le div.

    Depuis, j'ai découvert JSON, et donc je me suis dit que cela pourrait être intéressant, au lieu de formater mes données en PHP puis de les envoyer au client, de passer directement mon objet PHP à javascript et qu'il fasse lui même l'affichage.

    C'est surement du pinaillage, mais j'aimerais bien avoir des avis, à savoir, qu'est ce qui est le mieux, formater les données (c'est a dire ajouter les balises HTML) coté serveur, ou essayer d'en faire le plus coté client, et avoir un solution de formatage coté serveur en cas de javascript désactivé.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Difré91 Voir le message
    cela pourrait être intéressant, au lieu de formater mes données en PHP puis de les envoyer au client, de passer directement mon objet PHP à javascript et qu'il fasse lui même l'affichage.
    Oui c'est envisageable, mais par rapport à ta gestion avec/sans Javascript, le risque est que plus tu confies de traitements au Javascript et plus tu devras avoir de solutions de contournements sans Javascript (en tous cas ces dernières seront d'autant plus lourdes).
    Mais comme le dit burndev, c'est un choix.

    Et puis, suivant le type de site/application, il est aussi envisageable d'imposer l'activation de Javascript à ses visiteurs pour certaines fonctionnalités (en intranet, notamment) ...

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Par défaut
    Merci pour vos réponses !

    Je pense que je vais faire comme je faisais avant, avec le code HTML généré depuis PHP coté serveur.

    Par contre, pour ce qui est d'imposer javascript, je pense que la plupart des fonctionnalités proposées en javascript peuvent être proposées sans (avec légerment moins de confort d'utilisation). Pour exemple, je viens de faire un système d'infobulle seulement en CSS/HTML sur le modèle des menus déroulants CSS, pas besoin de javascript tout le temps !!

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Difré91 Voir le message
    Par contre, pour ce qui est d'imposer javascript, je pense que la plupart des fonctionnalités proposées en javascript peuvent être proposées sans
    Bien sûr, dans la majorité des cas.
    Je parlais de cas spécifiques tels que l'intranet

    Mais va faire un tchat utilisable, sans Javascript

    A+

  7. #7
    Membre très actif
    Homme Profil pro
    En rupture avec la societé
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : En rupture avec la societé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    Citation Envoyé par Difré91 Voir le message
    Pour répondre à ta question, je ne considère pas AJAX comme un langage et je suis entièrement d'accord, cela nécessite Javascript.
    Mais cela nécessite aussi (en bon chrétien charitable), de proposer une solution de secours en cas de javascript non activé.
    c'est purement une politique de dev, ajax(javascript) ou pas.
    Je trouve a ce jour dommage de perdre son temps a ce dire et si le visiteur n'a pas javascript activé.

    Citation Envoyé par Difré91 Voir le message
    Faut-il toujours délèguer la création du code html coté client en ajax, ou est-il préférable parfois de générer une partie du code HTML coté serveru pour le renvoyé en dur ?
    Je pense que ce sera suivant les besoins de traitement et d'utilisation.
    bon courage

  8. #8
    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
    Salut.

    Pour répondre à quelques remarques :
    Pour moi, un des avantages d'AJAX est d'allèger le traitement serveur en ne demandant pas la regénération entière du code de la page et des traitements qui vont avec à chaque modification sur la page.
    C'est loin d'être vrai.
    Il est parfois préférable de générer coté serveur du contenu qui pourra être inutile que de multiplier les requêtes pour aller chercher des fragments d'information. Une demande à un serveur est plus lourde pour le serveur qu'un include...

    A force de me renseigner, j'ai vu que l'utilisation d'innerHTML était déconseillée, et puis j'ai découvert JSON qui me permet de faire tous les traitements concernant la mise en forme des données coté client.
    Un sujet de débat récurrent sur le forum
    A vrai dire et contrairement à des méthodes archaïques, horribles et surtout pénalisantes pour le langage JavaScript telles que les document.write(), je n'ai personnellement pas d'avis tranché à ce sujet.
    Certes, l'insertion via les méthodes du DOM est la méthode la plus élégante et la plus conforme à l'esprit (à mon avis ), ça n'en fait pas pour autant la plus efficace et la plus rationnelle

    Je trouve a ce jour dommage de perdre son temps a ce dire et si le visiteur n'a pas javascript activé.
    Entièrement d'accord !
    Pour ne prendre que l'exemple de developpez.com, on est à moins de 5% d'utilisateurs ayant JavaScript désactivé.
    Au delà de l'exemple du chat donné par E.Bzz, aujourd'hui, tous les réseaux sociaux et sites de ce type (à commencer par Google) sont inaccessibles sans JavaScript (à part peut-être un minimum syndical pour ce dernier...) et à ma connaissance, personne n'y trouve à redire.
    On est loin des années 90, quand les développeurs faisaient n'importe quoi avec JavaScript, mais certaines idées reçues ont du mal à disparaitre...
    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] Que vaut Gregarius ?
    Par misterphil dans le forum AJAX
    Réponses: 2
    Dernier message: 28/10/2009, 17h40
  2. Socket SendData n'envoi que a un client
    Par blumax dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/11/2007, 20h35
  3. [AJAX] Que faire contre les fuites mémoires (memory leaks)
    Par cassy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/08/2007, 16h50
  4. ACE - AJAX Chat Engine (Server + Client)
    Par |PaRa-BoL dans le forum Mon programme
    Réponses: 4
    Dernier message: 15/01/2007, 17h02

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