Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-09-2008 14:35:43

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Ajax.Request qui fonctionne en local mais pas en ligne

Bonjour,

J'ai développé un systeme en AJAX qui affiche un conseil au démarrage du site. Pour cela j'utilise Ajax.Request qui se declenche a la fin du chargement de la page. Tout fonctionne très bien en local mais dès que j'ai fait la mise en ligne, rien ne se passe? hmm
J'ai testé un peu pour voir ce qui pouvait se passer mais je ne comprend vraiment pas car la fonction Ajax.Request fait bien appel à mon action index/notice et la parcoure correctement jusqu'a la fin. Mais dans le OnSuccess il ne se passe rien et je vous avoue que là je sèche.

Auriez vous une idée de ce qui peut manquer et qui fait que ça pourrait fonctionner en local mais pas en ligne?

Voici le code:
IndexController

Code:

<?php

class IndexController extends Zend_Controller_Action 
{
function init()
    {
        $this->initView();
        $this->view->user = Zend_Auth::getInstance()->getIdentity();
        $this->_AjaxContext = $this->_helper->getHelper('AjaxContext');
        $this->_AjaxContext
         ->addActionContext('notice','json')
         ->addActionContext('base-url','json')

         ->initContext('json');
    }

public function noticeAction() {
    
                                
        $db = Zend_Registry::get('dbAdapter');
        
        $select = $db->query('SELECT * FROM notice ORDER BY RAND() DESC LIMIT 1');
        //$select = $db->query('SELECT * FROM notice');
        
        $result = $select->fetchAll();
        
        $this->view->notice = $result;
        
        
            
    }    
}
?>

Code Javascript

Code:

 function notice(actionner) {
         
        if(actionner == 'nav')
             setCookie('notice','');

         new Ajax.Request('index/notice', {
                           method: 'get',
                          onSuccess: function(transport) {
                          alert("ok");    
                         json = transport.responseText.evalJSON();
                         if(!(getCookie('notice') == 'viewed')) {
                             
                            new Effect.Opacity('container', { from: 1, to: 0.7, duration: 0.5 });
                            new Effect.Appear('notice', { from: 0, to: 1, duration: 0.5 });
                            $('notice_content').innerHTML = json.notice[0].notice;
                            dtCurrent = new Date();
                               dtExpiration = new Date(dtCurrent.getUTCFullYear(),dtCurrent.getUTCMonth(),dtCurrent.getUTCDate());
                            dtExpiration.setTime(dtExpiration.getTime() + 86400000);
                            setCookie('notice','viewed',dtExpiration);
                            childNodes = $('container').childNodes;
                            
                            for(i=0;i<childNodes.length;i++) {
                                for(j=0;j<childNodes[i].attributes.length;j++) {
                                    if(childNodes[i].attributes[j].nodeName == 'id') {
                                        new Effect.Fade(childNodes[i].attributes[j].nodeValue, { from: 1, to: 0.7, duration: 0.5 });
                                    }
                                }
                            }
                            
                            

                            
                                }

                           }, onFailure{ alert("Erreur javascript");}
        });
         
}

Et pour finir le code de vue:

Code:

<body onLoad="notice('body');">

Merci de votre aide wink


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

#2 02-09-2008 16:16:08

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: Ajax.Request qui fonctionne en local mais pas en ligne

Salut,

ne devrais-tu pas ajouter /format/json à ton url ?

Code:

new Ajax.Request('index/notice/format/json', {

Hors ligne

 

#3 02-09-2008 22:43:28

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Re: Ajax.Request qui fonctionne en local mais pas en ligne

Merci pour ton aide mais ça ne fonctionne pas sad. Ce que je trouve vraiment bizarre c'est que localement aucun probleme et en ligne ça ne passe pas.


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

#4 03-09-2008 00:33:55

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: Ajax.Request qui fonctionne en local mais pas en ligne

rajoute une fonction 'onException' et affiche la si il y en a une


IT Dev @Twitter

Hors ligne

 

#5 04-09-2008 13:56:35

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Re: Ajax.Request qui fonctionne en local mais pas en ligne

Le probleme est partiellement resolu puisque j'arrive à faire tourner tout ça sous safari et firefox. Mais une erreur etrange apparait sous Internet Explorer: "Identificateur, chaine ou nombre attendu" et le code ne s'execute pas. J'ai lancé un autre sujet sur d'autres forums mais pour l'instant rien de constructif... Je trouve quand même tout celà etrange que Ajax.Request ne fonctionne pas sous IE...


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

#6 04-09-2008 17:25:29

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: Ajax.Request qui fonctionne en local mais pas en ligne

Salut,

dis donc, je regarde un peu le code js/jquery (?) puisque ça doit venir de là, y'a un truc que je comprends pas

Code:

onFailure{
    alert("Erreur javascript");
}

ce sera pas mieux de mettre

Code:

onFailure:function(){
    alert("Erreur javascript");
}

?

je dis ça, je dis rien hein...

Hors ligne

 

#7 04-09-2008 17:35:09

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Ajax.Request qui fonctionne en local mais pas en ligne

il faut que tu affiche ce que te retourne ton serveur car il y a dedans une erreur js
souvent ça viens d'une , en trop apres le dernier élément d'un tableau ou des champs d'un objets js
IE est moins permissif que ces confrère sur ce sujet

Code:

{result: [
   'valeur1',
   'valeur2',
   'valeur3',
   'valeur4',
]}

dans ce cas il ne faut pas de , apres    'valeur4' FF s'en fout mais IE plante

Code:

{result: {
  a: 'valeur1',
   b:'valeur2',
   c:'valeur3',
   d:'valeur4',
}}

pareil dans ce cas

A+JYT

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