Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-07-2009 11:10:11

yoga20
Membre
Date d'inscription: 23-04-2009
Messages: 33

[Résolu][1.8]Problème caractères spéciaux après requête ajax

Bonjour mon problème est le suivant j'ai créé 2 listes liées lorsque l'on fait un choix dans la première le résultat de la requête ajax est injecté dans la seconde. Mais lorsque des valeurs possèdent des caractères spéciaux sont injectés les libellés de la liste sont alors tronqué à la position de l'accent.(ex : problème => probl) .
Je pense que cela vient d'un problème d'encodage , voici mon code :

Controleur:

Code:

class AjaxController extends Zend_Controller_Action {
    /**
     * The default action - show the home page
     */
    public function indexAction() {
        // TODO Auto-generated AjaxController::indexAction() default action
    }

    
    public function departementAction() {
        
        if ($this->_request->isPost()) {
            $id_departement = $this->_request->getParam('idDepartement');
            $this->_helper->layout->disableLayout();
                    $this->_helper->viewRenderer->setNoRender(true);
                    $this->_helper->viewRenderer->setNeverRender(true);
            
            $departement = new Departement();
            $list=$departement->getCommunes($id_departement); 
            $this->_helper->json( $list );
            $this->_helper->$list;
        }
    }
}

Jquery:

Code:

function getDepartement(event){
    $.ajax({
        type: 'POST',
        url: '../Ajax/departement',
        data: 'idDepartement=' + $("#liste_departement option:selected").val(),
        success: function (response) { 
            var obj = document.getElementById('liste_communes');
            var optionData = eval("(" + response + ")");
            obj.options.length = null;
            i=1;
            for(data in optionData) {   
                obj.options[i] = new Option(optionData[data],data);
                i++;
            }
        }
    });

mon formulaire (modèle)

Code:

$Tdepartement = new Departement();
        $rowSetDepartements = $Tdepartement->fetchAll($Tdepartement->select()->order('libelle ASC'));
        $listeDepartements =  new Zend_Form_Element_Select('iddepartement');
        $listeDepartements->setLabel('Département');
        $listeDepartements->setAttrib('id','liste_departement');
        $listeDepartements->addMultiOption('','');
           foreach ($rowSetDepartements as $rowDepartement){
            $listeDepartements->addMultiOption($rowDepartement->iddepartement,$rowDepartement->libelle);
        }
        
        
        
        $Tcommune = new Commune();
        $rowSetCommune = $Tcommune->fetchAll($Tcommune->select()->where('idcommune<>99999999')->order('libelle ASC'));
        $listeCommunes =  new Zend_Form_Element_Select('idcommune');
        $listeCommunes->setLabel('Commune');
        $listeCommunes->setAttrib('id','liste_communes');
        $listeCommunes->addMultiOption('','');
           foreach ($rowSetCommune as $rowCommune){
            $listeCommunes->addMultiOption($rowCommune->idcommune,$rowCommune->libelle);
        }

ma vue

Code:

<div id="formContainer">
    <?php   echo $this->form ;?>
</div>

Que me conseillez-vous ?
Merci

Dernière modification par yoga20 (23-07-2009 12:00:02)

Hors ligne

 

#2 23-07-2009 11:55:27

ALkyD
Membre
Lieu: Limoges
Date d'inscription: 11-07-2007
Messages: 69
Site web

Re: [Résolu][1.8]Problème caractères spéciaux après requête ajax

J'ai eu le même problème que toi à une époque, j'ai trouvé la solution suivante :

Si $ma_chaine est destiné à être dans un tableau JSON renvoyé par Ajax, je dois l'encoder :
$ma_chaine = utf8_encode(html_entity_decode($ma_chaine));

Ca te donnera un truc du genre :
problème => probl\u00E8me

A essayer.

Hors ligne

 

#3 23-07-2009 11:58:30

yoga20
Membre
Date d'inscription: 23-04-2009
Messages: 33

Re: [Résolu][1.8]Problème caractères spéciaux après requête ajax

Parfait merci ça fonctionne j'ai modifié le code de ma fonction getCommunes qui est appelée dans mon contrôleur ajax :


Code:

    public function getCommunes($id){
        $commune=new Commune();
        
        $rowset = $commune->fetchAll($commune->select()->where('iddepartement = ?',$id));
        $options = array();
        
        foreach ($rowset as $row){
            $options[$row->idcommune]=utf8_encode($row->libelle);
        }
        return $options;
    }

Dernière modification par yoga20 (23-07-2009 11:58:58)

Hors ligne

 

#4 23-07-2009 16:26:27

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu][1.8]Problème caractères spéciaux après requête ajax

Ce n'est que résoudre partiellement votre problème.
Vous devez travailler entièrement en UTF8. Fichiers PHP et Javascripts, Base (et connexion à celle ci), Environnement PHP, et évidemment, Apache.

Hors ligne

 

#5 23-07-2009 16:30:37

yoga20
Membre
Date d'inscription: 23-04-2009
Messages: 33

Re: [Résolu][1.8]Problème caractères spéciaux après requête ajax

Merci pour le conseil mais mon application est pratiquement terminée ce sera mis en place pour mon prochain projet.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages