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] Séparation contrôleur / vue et Ajax


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut [AJAX] Séparation contrôleur / vue et Ajax
    Bonjour,

    J'utilise depuis relativement peu de temps Ajax et, lorsque le programme Ajax génère du HTML, je procède, classiquement je pense, via une variable qui contient le texte du html à retourner à la fonction Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $texte = "<div>Du texte et autres joyeusetés HTML</div>";
     
    // et à la fin du programme :
    echo $texte;
    Je ne trouve pas ça très propre de passer par une variable PHP alors que le reste de l'appli est développée en séparant le code HTML du PHP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    foreach($tableau)
    {
    ?>
    <div>Du texte et autres joyeusetés HTML</div>
    <?php
    }
    ?>
    Y a t-il une manière plus propre d'appliquer ce principe en Ajax ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Bonjour, il est possible d'utiliser JSON comme format de données pour AJAX, et ensuite d'utiliser des templates pour mettre à jour le html.

    underscore.js permet de faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var list = "<% _.each(people, function(name) { %> <li><%= name %></li> <% }); %>";
    _.template(list, {people : ['moe', 'curly', 'larry']});
     
    Output => "<li>moe</li><li>curly</li><li>larry</li>"

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Mouais... le JSon est encore moins lisible que le HTML dans une variable PHP !

    Je jetterai un oeil à l'occasion.

    Merci pour la réponse.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    Concrètement, qu'est ce que fait ta fonction ajax, et quel est le code HTML que tu dois ajouter ?

    Je pense plus à un problème de conception.
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  5. #5
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    le JSon est encore moins lisible que le HTML dans une variable PHP !
    il existe des framework de templating comme Knockout.js qui donne un syntaxe HTML comme ceci :

    Html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <p>First name: <strong data-bind="text: firstName"></strong></p>
    <p>Last name: <strong data-bind="text: lastName"></strong></p>
    <p>First name: <input data-bind="value: firstName" /></p>
    <p>Last name: <input data-bind="value: lastName" /></p>
    <p>Full name: <strong data-bind="text: fullName"></strong></p>
    <button data-bind="click: capitalizeLastName">Go caps</button>
    JS
    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
     
    // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
    function AppViewModel() {
        this.firstName = ko.observable("Bert");
        this.lastName = ko.observable("Bertington");
     
        this.fullName = ko.computed(function() {
            return this.firstName() + " " + this.lastName();    
        }, this);
     
        this.capitalizeLastName = function() {
            var currentVal = this.lastName();        // Read the current value
            this.lastName(currentVal.toUpperCase()); // Write back a modified value
        };    
    }
     
    // Activates knockout.js
    ko.applyBindings(new AppViewModel());
    Pour : syntaxe html sympa
    Contre : pas simple a débugger , un temps de mise en place non négligeable.


    Lien vers l'exemple : ici

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Golgotha Voir le message
    Concrètement, qu'est ce que fait ta fonction ajax, et quel est le code HTML que tu dois ajouter ?

    Je pense plus à un problème de conception.
    Un truc classique, il me semble, du genre :
    Clic sur un objet cliquable lance une fonction javascript qui passe des paramètres en Ajax à un programme PHP qui met à jour la BDD puis construit un bout de HTML pour l'afficher dans la page à la place d'autre chose ou à la suite de quelque chose ou dans une div jusque là vide.

    C'est la contruction du HTML en PHP qui me pose des problèmes de conscience et, à vrai dire, de facilité de codage. C'est plus facile d'écrire du HTML avec des bouts de PHP dedans pour afficher le contenu de variables PHP plutôt que de construire du HTML dans une variable texte PHP.

    Concrètement, ceci :
    Code PHTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div class="machin">
    	Ma variable :&nbsp;
    	<?php echo $la_variable; ?>
    </div>

    Est plus facile et plus propre à écrire que ceci :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $html = '<div class="machin">'."\n";
    $html .=	'Ma variable :&nbsp;';
    $html .=	$la_variable."\n";
    $html .= '</div>'."\n";
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Par défaut
    Il n'y a aucune nécessité de transmettre différemment le code html destiné à être affiché en tant que page et celui destiné à être utilisé en tant que portion de page.

    donc probablement un problème de conception...


    Beaucoup d'applications font la séparation entre la notion de vue et celle de layout/template (je cherche toujours de bons mots en français pour ça).
    Une vue te permet d'afficher le code HTML correspondant à un objet (ou si t'es pas en POO à une variable, un tableau). Ce sera souvent (mais pas toujours) du code HTML dans une variable PHP.
    Le template/layout te permet de gérer ce qui est autour, donc la structure générique de ta page html dans le cas d'une requête destinée à être en pleine page, et à priori rien du tout dans le cas d'une requête AJAX, vu que tu ne souhaite avoir que ta variable. En général, ce sera du code html avec un peu de php.

    J'espère que ça pourra t'éclairer.

    En tout cas, si tu préfère, tu peux tout à fait faire un requête AJAX avec un code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div class="machin">
    	Ma variable :&nbsp;
    	<?php echo $la_variable; ?>
    </div>
    Mais pour t'en dire plus, il nous faudrait ta conception

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

Discussions similaires

  1. Requete Ajax vers Contrôleur PHP
    Par Braise dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/06/2016, 11h05
  2. Réponses: 6
    Dernier message: 31/10/2012, 16h01
  3. [AJAX] Besoin d'aide sur AJAX ...
    Par kcizth dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 05/04/2006, 09h45
  4. [AJAX] Question sur un tutos ajax
    Par maximenet dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/03/2006, 21h05
  5. [AJAX] Formulaire prépopuler avec du ajax dans la page
    Par shwin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 15h37

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