Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-01-2015 18:41:05

badstring
Membre
Date d'inscription: 10-12-2014
Messages: 10

Ajax et zf2

Bonsoir,

Je viens vers vous car je suis actuellement bloqué sur l'utilisation d'ajax avec zf2.

Pour plus de facilité, j'ai crée un module de test (appelé ajax) qui ne contient qu'un controller, un formulaire et une page index.phtml

L'objectif tout simple: lorsque je tape du texte dans un champ du formulaire, je veux faire apparaître un pop up montrant que il y a bien eu un événement. Bien-sur ce n'est pas l'objectif final ^^ c'est juste pour simplifier au maximum et réduire les erreurs. je pense que cela facilite le debeugage.

voici mon code du js (ajax.js) :

Code:

$(document).ready(function(){
    $(".test").on("keyup",function(event){  //quand on entre du texte dans le champ 'test'    
        $.ajax({
            url:        '/ajax/index', // j'appaelle la fonction index du controller ajax
            type:       'POST',
            dataType:   'json',
            async:      true,
            data:       $(".test").serialize(),
            success: function(data, status)
            {           
                alert('je suis ici'); // j'affiche le pop up
            },
            error : function(xhr, textStatus, errorThrown) {
                if (xhr.status === 0) {
                    alert('Not connected. Verify Network.');
                } else if (xhr.status == 404) {
                    alert('Requested page not found. [404]');
                } else if (xhr.status == 500) {
                    alert('Server Error [500].');
                } else if (errorThrown === 'parsererror') {
                    alert('Requested JSON parse failed.');
                } else if (errorThrown === 'timeout') {
                    alert('Time out error.');
                } else if (errorThrown === 'abort') {
                    alert('Ajax request aborted.');
                } else {           
                    alert('Remote sever unavailable. Please try later');
                }
            }
        });
    });
});

ensuite mon controller AjaxController

Code:

[lang=php]namespace Ajax\Controller;

 use Zend\Mvc\Controller\AbstractActionController;
 use Zend\View\Model\ViewModel;
 use Zend\View\Model\JsonModel;
 use Zend\View\Renderer\PhpRenderer;
 use Ajax\Form\AjaxForm;
 use Ajax\Model\Ajax;

 class AjaxController extends AbstractActionController
 {
     public function indexAction()
     {
         // Permet d'ajouter le script
         $renderer = $this->serviceLocator->get('Zend\View\Renderer\RendererInterface');
         $renderer->headScript()->appendFile('/js/ajax.js');
         
         $form = new AjaxForm();
         $request = $this->getRequest();
         
         return array(
             'form' => $form,
         );
     }

        //ma fonction 
        public function testAction()
    {
        $request = $this->getRequest();
        if ($request->isXmlHttpRequest())
        {
            $retour ="azerty"; //  pour le test
            if (empty( $errorArray))
            {
                $view = new JsonModel(array(
                        'retour' =>$retour,//j'envoi la variable $retour
                        'success'=>true,
                ));
            }
            else
            {
                $view = new JsonModel( $errorArray);
            }
            $view->setTerminal(true);
        }
        return($view);
    }
 }

j'utilise firebug pour m'aider mais la il ne m'aide pas vraiment lol
message d'erreur :
- POST http://zf2-tutorial.localhost/ajax/index jquery.min.js (ligne 8625)
donc ca m'aide pas beaucoup

la ligne 8625 de jquery.min.js :

Code:

try {
// Do send the request (this may raise an exception)
    xhr.send( options.hasContent && options.data || null );
    } catch ( e ) {
    // #14683: Only rethrow if this hasn't been notified as an error yet
    if ( callback ) {
        throw e;
    }
}

je ne voit pas du tout d'ou vient l'erreur

je vous rajoute une image de firebug

http://img15.hostingpics.net/pics/175918Capturedu20150121183317.png


Si qq1 à une idée je suis preneur.

Hors ligne

 

#2 22-01-2015 11:53:40

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Ajax et zf2

Salut, désolé mais là on a rien comme info. Sans avoir d'erreurs ou autre on peut pas t'aider. C'est comme quand tu vas chez le garagiste et tu lui dis que ta voiture marche pas mais tu lui donnes pas les clés et il doit se démerder :p.

Déjà pour le JsonModel tu n'as pas besoin du setTerminal, tu dois activer le ViewJsonStrategy pour retourner du json. Là t'as plus un problème ajax lié à JQuery qu'autre chose. Et en debug on utilise pas les versions minifiés des lib JS ça permet de pouvoir faire du debug.

Hors ligne

 

#3 23-01-2015 09:22:54

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Ajax et zf2

Bonjour bonjour smile

Effectivement ton erreur viens de l'ajax, ta partie zf2 à l'air correcte.

Tu devrais mettre ton $.ajax en async : false. Car si un utilisateur tape trop vite, ton script risque de partir en cacahuète wink
Sinon j'essairai un complete : alerte ok, plutôt qu'un success.
et pour finaliser, je vérifierai la variable $(".test").serialize() (vu qu'apperement JQuery n'arrive pas à envoyer ton data).

Voila voila, si jamais tu à plus de précisions n'hésite pas wink

Dernière modification par flobrflo (23-01-2015 09:23:25)

Hors ligne

 

#4 23-01-2015 12:11:51

badstring
Membre
Date d'inscription: 10-12-2014
Messages: 10

Re: Ajax et zf2

Merci pour ces réponses !

Tout d'abord: Orkin je veux bien donner des erreur mais je n'ai rien à donner ^^ et je n'utilise pas la version minifié de jquery, le nom du fichier je te l'accorde laisse penser que je l'utilise, mais je n'aurai pas pu te sortir la ligne 8625 sinon smile

Je vais essayer le ViewJsonStraegy. Ce que je ne comprend pas c'est que j'ai déja utilisé ce script auparavant, et cela fonctionnait nickel.

Flobrflo merci pour tes conseils, j'ai essayé de mettre ca en place, mais pas de résultat pour le moment.

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