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

Ext JS / Sencha Discussion :

EXTJS 3.4 - PHP : lire un flux xml


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut EXTJS 3.4 - PHP : lire un flux xml
    Bonjour,

    Je souhaite mettre en place l'alimentation d'un composant Grid via un flux xml généré par un programme php. Ci-après mes différents élements
    1 - programme 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
     
    <?php 
        header ('Content-Type:text/xml; charset=ISO-8859-1');
    ?>
    <?xml version="1.0" encoding="utf-8"?>
    <ListProducts>
        <Request>
           <IsValid>True</IsValid>
            <ItemSearchRequest>
                <Author>nom_01</Author>
                 <SearchIndex>Products_01</SearchIndex>
             </ItemSearchRequest>
             <TotalResults><?php echo($adminProductsList->getTotalNumberOcc()); ?></TotalResults>
       		 <TotalPages><?php echo($adminProductsList->getNumberPage()); ?></TotalPages>
        </Request>
        <Products>
             <?php
                    $loop = 0; 
                    while ( $loop < $adminProductsList->getNumberOccurrence()) { 
                            $occ = $adminProductsList->getOccurrence($loop); ?>
             <Product Id='<?php echo($occ->getReferenceProduct()); ?>'>
                <Reference><?php echo($occ->getReferenceProduct()); ?></Reference>
                <Categorie><?php echo($occ->getCategorieProduct()); ?></Categorie>
    			<Designation><?php echo($occ->getDesignationProduct()); ?></Designation>
    			<Statut><?php echo($occ->getStatutProduct()); ?></Statut>
             </Product>
             <?php
                            $loop = $loop + 1;
                    } ?>
      </Products>
    </ListProducts>
    2 - code javascript :
    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
     
    Ext.onReady(function(){
     
        // create the Data Store
        var store = new Ext.data.Store({
            // load using HTTP
        	proxy : new Ext.data.HttpProxy({ 
        		url: './indexAdmin.php?uri=AdminProductsList&acte=begin'
             }),    	
     
            // the return will be XML, so lets set up a reader
            reader: new Ext.data.XmlReader({
                   // records will have an "Item" tag
                   record: 'Product',
                   idProperty: '@id',
                   totalRecords: '@total'},
                   	[ {name: 'Id', mapping: '@id'}, 'Reference', 'Categorie', 'Designation', 'Statut' 
              ])
        });
     
        // create the grid
        var grid = new Ext.grid.GridPanel({
            store: store,
            columns: [
                {header: "Reference", width: 120, dataIndex: 'Reference', sortable: true},
                {header: "Categorie", width: 180, dataIndex: 'Categorie', sortable: true},
                {header: "Designation", width: 115, dataIndex: 'Designation', sortable: false},
                {header: "Statut", width: 100, dataIndex: 'Statut', sortable: false}
            ],
            renderTo:'example-grid',
            width:540,
            height:200
        });
     
        store.load();
     
    });
    Mais le grid n'est pas alimenté. En passant par firefox ou même sous l'outils de dev sous IE9, en regardant la partie "Reponse" de la requête, le flux xml est bien généré.
    Peut-être que le soucis est au niveau de mon code JS, mais je ne vois rien. Voyez-vous le soucis ?
    D'avance merci pour votre aide.
    A+
    Stéphane.

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Post le code xml généré
    comme toujours on se moque complètement de ce que fait le serveur
    la seule chose que gère le navigateur est le fux généré

    il te suffit dans ton url d'ouvrir l'url indexAdmin.php?uri=AdminProductsList&acte=begin

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    Merci sekaijin pour ton post.
    Loin de moi d'ignorer ce qui se passe du côté serveur, mais il faut bien essayer de résoudre le problème par un point d'entrée et éliminer ce qui est juste pour se rapprocher de ce qui est faux.

    Voici le flux xml généré
    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
    <?xml version="1.0" encoding="utf-8"?>
    <ListProducts>
    	<Request>
           <IsValid>True</IsValid>
            <ItemSearchRequest>
                <Author>nom_01</Author>
                 <SearchIndex>Products_01</SearchIndex>
             </ItemSearchRequest>
             <TotalResults>4</TotalResults>
       		 <TotalPages>1</TotalPages>
        </Request>
    	<Products>
                      <Product Id='CHERRY052012'>
                <Reference>CHERRY052012</Reference>
                <Categorie>CAT11</Categorie>
    			<Designation>Cherry - F?tes de M?res</Designation>
    			<Statut>1</Statut>
             </Product>
                      <Product Id='COEURNOI2012'>
                <Reference>COEURNOI2012</Reference>
                <Categorie>CAT92</Categorie>
    			<Designation>Coeur Noisette</Designation>
    			<Statut>1</Statut>
             </Product>
                      <Product Id='GALROIS2011'>
                <Reference>GALROIS2011</Reference>
                <Categorie>CAT54</Categorie>
    			<Designation>Galette des Rois</Designation>
    			<Statut>1</Statut>
             </Product>
                      <Product Id='TOTO2012'>
                <Reference>TOTO2012</Reference>
                <Categorie>CAT91</Categorie>
    			<Designation>Toto</Designation>
    			<Statut>1</Statut>
             </Product>
               </Products>
    </ListProducts>
    Par contre, en passant par l'outils de développement sous IE9, je me suis aperçu qu'avant la balise <?xml version="1.0" encoding="utf-8"?>, j'ai deux lignes vides (image en pièce jointe).

    En passant par firefox, j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur d'analyse XML : instruction de traitement XML ou texte pas au début d'une entité externe
    Numéro de ligne 3, Colonne 1 :<?xml version="1.0" encoding="utf-8"?>
    ^
    Est ce que le problème peut venir de ces deux lignes vides ?


    Merci,
    Stéphane.
    Images attachées Images attachées  

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    Le problème est résolu. Il s'agissait bien des lignes vides qui se trouvaient avant.
    Dans l'architecture php que j'utilise (en MVC), avant d'envoyer les données au navigateur, elles sont stockées dans un tampon (via ob_start). Donc avant de démarrer la temporisation, j'effectue un clean du tampon (ob_end_clean()). Je n'ai plus les deux lignes vides et c'est ok.
    A+
    Stéphane.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/05/2011, 19h20
  2. Lire un flux XML
    Par ryan dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2008, 22h29
  3. Lire un flux XML : problème d'adresse.
    Par sliderman dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 12/06/2008, 17h10
  4. [PHP] Limiter résultats flux xml
    Par Freedolphin dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 22/02/2006, 09h53
  5. XMLhttp lire un flux xml
    Par Larson dans le forum ASP
    Réponses: 3
    Dernier message: 13/09/2005, 15h20

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