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

MkFramework Discussion :

Charger une vue HTML en ajax


Sujet :

MkFramework

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut Charger une vue HTML en ajax
    Bonjour,
    Je ne sais pas comment m'y prendre pour charger une vue en ajax.
    J'ai une vue html : newHTML.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
     
    <fieldset>
      <legend>Ajout de pièce</legend>
      <div id="log"></div>
      <form class="form-horizontal" action="" method="POST" >
     
     
      	<div class="form-group">
      		<label class="col-sm-2 control-label">cde_id</label>
      		<div class="col-sm-10"><select name="cde_id" class="form-control" ><option  value="1">1</option><option  value="2">2</option></select></div>
      	</div>
     
      	<div class="form-group">
      		<label class="col-sm-2 control-label">p_id</label>
      		<div class="col-sm-10"><input type="text" name="p_id" value="" class="form-control" /></div>
      	</div>
     
      	<div class="form-group">
      		<label class="col-sm-2 control-label">qte</label>
      		<div class="col-sm-10"><input type="text" name="qte" value="" class="form-control" /></div>
      	</div>
     
     
     
      <input type="hidden" type="text" name="tokenAjax" value="1480723320####e606a7b5accd57aed054d2c7d862e7bc967c9a81" />
      <div class="form-group">
          <div class="col-sm-offset-2 col-sm-10">
      		<input type="submit" class="btn btn-success" value="Ajouter" /> <a class="btn btn-link" href="index.php?:nav=mkCdeLignes::list">Annuler</a>
      	</div>
      </div>
     
      </form>
    </fieldset>
    J'ai prévu un emplacement dans ma vue _list.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <!-- emplacement pour les echanges -->
    <div id = "dialogue" title = "Fenêtre">
    <p></p>
    </div>
    Sans recharger la vue list, en jQuery, j'utilise la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    jQuery(document).ready(function($){
                // Là on peut utiliser $() en ayant la certitude que c'est jQuery, sans conflit possible  
                $(document).on("click", "#btn_ajout", function(evt) {
                  alert("Vous avez sélectionné : " + $(this).text());
                  evt.preventDefault(); // stop le comportement naturel
                  $("#dialogue p").load("index.php?:nav=mkCdeLignes::newHTML");
     
                });
     
            });
    Dans mon contrôleur main, j'ai la méthode suivante :
    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
     
    public function _newHTML(){
     
        //$this->oLayout->setLayout	( 'ajxlayout'	) ; // changement de layout vide pour notre affichage
        //_root::setConfigVar('site.mode','prod'); // desactive la barre Debug
     
        $oView=new _view('mkCdeLignes::newHTML');
     
    		//$oPluginXsrf=new plugin_xsrf();
    		//$oView->token=$oPluginXsrf->getToken();
     
    		$this->oLayout->add('main',$oView);
     
        // vue pour le script
    		$oView=new _view('mkCdeLignes::ns');
    		$this->oLayout->add('main',$oView);
        //echo "<h1>Heelo</h1>" ;
    	}
    Comment charger dynamiquement juste le bout de code html de la vue newHTML sans être obligé de placer ce bout de code dans un fichier html enregistré dans le répertoire /public/newHTML.html de mon site.
    Cordialement

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    Plusieurs questions:

    1. vous avez pas oublié le lien jquery ? dans le code jquery, ça créé un eventement sur un lien avec l'id "btn_ajout"
    2. vous avez bien ajouté jquery à votre site ?
    3. que se passe t il ? vous avez une erreur ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonjour,
    Encore merci pour l'intérêt que vous portez à mon problème.
    Je suis désolé pour mon imprécision, je suis allé directement sur ce qui ne fonctionnait pas.
    En dehors de la vue html : newHTML.php, tous les autres codes sont des extraits.

    1. vous avez pas oublié le lien jquery ? dans le code jquery, ça créé un eventement sur un lien avec l'id "btn_ajout"
    - Non, je n'ai pas oublié le chargement de jQuery, et en cliquant sur le lien "btn_ajout", je charge bien la vue évoquée
    dans la méthode ci-dessous de mon contrôleur main.php, cependant, j'ai un problème d'affichage, d'où ma tentative
    de charger un Layout vide avant, d'où les deux premières lignes en commentaire au début de la méthode.
    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
     
    public function _newHTML(){
     
        //$this->oLayout->setLayout	( 'ajxlayout'	) ; // changement de layout vide pour notre affichage
        //_root::setConfigVar('site.mode','prod'); // desactive la barre Debug
     
        $oView=new _view('mkCdeLignes::newHTML');
     
    		//$oPluginXsrf=new plugin_xsrf();
    		//$oView->token=$oPluginXsrf->getToken();
     
    		$this->oLayout->add('main',$oView);
     
        // vue pour le script
    		$oView=new _view('mkCdeLignes::ns');
    		$this->oLayout->add('main',$oView);
        //echo "<h1>Heelo</h1>" ;
    	}
    2. vous avez bien ajouté jquery à votre site ?
    - oui, il est bien chargé

    3. que se passe t il ? vous avez une erreur ?
    - j'avais un problème d'affichage avec mon menu principal qui se répétait.

    En répondant à cette dernière question, j'ai trouvé la réponse à ma question.
    Dans mon layout vide, je n'avais pas prévu un emplacement pour insérer le code main.
    J'ai donc créé un layout "htmlLayout.php" dans le dossier /layout de mon site et il contient seulement
    le code ci-dessous, cela évite l'affichage que j'avais avec la répétition du menu principal donc avec deux champs de recherche qui se suivent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo $this->load('main') ?>

    Encore merci pour ce guidage GPS vers la solution.

    Cordialement.
    Images attachées Images attachées  

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Merci pour cette précision

    Pour information, pour les liens ajax vous avez en effet 2 solutions:
    - créer un layout special pour vos appel ajax (avec effectivemnt uniquement le load de l'emplacement "main"
    - afficher directement la vue

    Pour la première solution vous avez trouvé par vous même

    Pour la seconde, cela donnerait avec votre code fourni
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public function _newHTML(){
     
     
        $oView1=new _view('mkCdeLignes::newHTML');
     
        echo $oView1->build();		
     
        // vue pour le script
        $oView2=new _view('mkCdeLignes::ns');
     
        echo $oView2->build();	
        exit;	
        //echo "<h1>Heelo</h1>" ;
    }

    Pour la solution 1, j'avais oublié avoir déjà fait une vidéo
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Je me demande où finira votre générosité. Vous m'avez donné plus que votre attention.
    Du coup, je me rappelle d'une chanson de Brel qui dit "qu'il y en a qui ont le coeur tellement large qu'on en voit que la moitié".
    Je ne pense pas me tromper en avançant, que vous êtes de ceux-là.

    Encore merci

    Cordialement

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Vous me flattez
    C'est normal pour moi d'assurer le SAV de mon framework: c'est déjà difficile pour moi de le faire connaitre: je me dois de remercier les utilisateurs en répondant aux questions
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/03/2010, 22h29
  2. Réponses: 3
    Dernier message: 10/06/2009, 16h50
  3. [AJAX] Charger une image aléatoire en Ajax
    Par Scrat66 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/12/2008, 12h49
  4. [Struts] - Charger une vue en fonction du navigateur ?
    Par Tigrou35 dans le forum Struts 1
    Réponses: 1
    Dernier message: 07/08/2007, 11h58
  5. Charger une liste dynamiquement avec AJAX
    Par macra dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 20/10/2006, 21h39

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