Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-09-2009 17:16:55

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

Problème pour faire une requête dojo.xhr sous le Zend.

Bonjour,

Après moultes problèmes (:p) je suis enfin parvenu à activer dojo. J'essaie maintenant de faire une requête avec xhrGet. Mais j'ai un problème qui est visiblement lié à l'URL. Je pensais que ce sujet serait plus présent sur le net mais je n'ai pas réussi à trouver un exemple qui me convienne.

J'ai donc une vue index.phtml du controleur IndexControler qui redirige l'utilisateur vers un autre controleur (ApplicationControleur) avec l'action index et un paramètre id de valeur 1 (on a donc l'url: projet/application/index/id/1). Dans l'index de ApplicationControleur on a alors un appel à AJAX:

AjaxController:

Code:

class Polls_AjaxController extends Zend_Controller_Action
{

    public function init()
    {
        $this->_AjaxContext = $this->_helper->getHelper('AjaxContext');
        $this->_AjaxContext
         ->addActionContext('index','json')
         ->addActionContext('contact','json')
         ->initContext('json');
    }

    public function indexAction()
    {
        if ($this->getRequest()->isXmlHttpRequest()) 
        {    echo "ok";
        }
    }
    
    public function contactAction()
    {    
        $this ->_helper->viewRenderer->setNoRender();
        if ($this->getRequest()->isXmlHttpRequest()) 
        {
            $mail = $this->_request->getParam('mail');
            $db = Zend_Registry::get('dbAdapter');
            Zend_Db_Table_Abstract::setDefaultAdapter($db);
            $contacts = new Polls_Model_Contacts();
            $row = $contacts->createRow();
            $row->mail = $mail;
            $row->save();
            echo "ajoute";    
        }    
    
    }
   
}

Et le code de la vue associé à indexAction de ApplicationController:

Code:

<script type="text/javascript">

    function showContactDialog()
    {
        dijit.byId("contactDialog").show();
    }

    function addContact(arguments)
    {
        xhrArgs = {
                url: "ajax/contact",
                sync: true,
                headers: {"X-Requested-With": "XMLHttpRequest"},
                
                content:{
                mail:arguments[0].mail 
                },
                load: function(responseObject, ioArgs){ 
                    alert(responseObject);
                },
                error: function(response, ioArgs){             
                      return response;
                }
               }
          
          dojo.xhrGet(xhrArgs);
    }

    dojo.addOnLoad(showContactDialog);
    
</script>

Après plusieurs tests l'insertion dans la table se fait correctement si je fais manuellement appel au controleur. En tapant projet/polls/application l'insertion s'effectue alors sans problème. En revanche lorsque je tape projet/polls/application/ ou projet/polls/application/index/id/1 là ça ne marche plus!

Alors je n'y comprend vraiment plus rien. Je pense que l'URL est mal interprétée d'un côté ou d'un autre mais je ne sais pas comment règler ça.

Merci par avance.


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

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