2010-07-06 14 views
0

Je suis tryin pour valider un champ de saisie avec un appel ajax à un contrôleur CakePHP Mon Ajax est:Réponse Ajax CakePHP contrôleur retour null

$("#UserAlphaCode").change(function() { 
     $.ajax({ 
      type: "post", 
      url: '<?php echo $this->webroot ?>' + "/alpha_users/checkCode", 
      data: ({code : $(this).val()}), 
      dataType: "json", 
      success: function(data){ 
       alert (data); 
      }, 
      error: function(data){ 
       alert("epic fail"); 
      } 
     }); 
    }); 

Mon code contrôleur

function checkCode() { 
     Configure::write('debug', 0); 
     $this->autoRender = false; 
     $codePassed = $this->params['form']['code']; 
     $isCodeValid = $this->find('count',array('conditions'=> array('AlphaUser.code' => $codePassed))); 
     if ($isCodeValid == 0){ 
      $codeResponse = false; 
     } else { 
      $codeResponse = true; 
     } 
     echo json_encode ($codeResponse); 
    } 

I Je suis sûr que j'utilise $ this-> params faux ici pour accéder aux données envoyées par la requête ajax. Que devrais-je faire à la place?

Répondre

1

Essayez quelque chose comme:

$codePassed = $_POST['code']

vous pouvez également essayer de mettre:

$this->log($codePassed,LOG_DEBUG); 

quelque part là-bas et examiner la sortie dans tmp/logs/debug.log

En utilisant Firebug contribuera à déboguer le transport .

+0

Après avoir essayé votre suggestiong $ codePassed = $ _POST [ « code »] Je suis en mesure de retourner ce retour à l'alerte (données) Je l'ai testé en changeant ma sortie du régulateur de écho json_encode (codeResponse $); à echo json_encode ($ codePassed); Cela a fonctionné. Mais quand j'essaie de retourner $ isCodeValid Je reçois une réponse nulle. – wcolbert

+0

Peut-être que quelque chose ne va pas avec mon $ isCodeValid = $ this-> find ('count', array ('conditions' => array ('AlphaUser.code' => $ codePassed))); – wcolbert

+0

J'ai vérifié le contenu de l'en-tête et je n'ai rien, mais il y a une erreur dans le débogueur chrome qui dit "Uncaught TypeError: Impossible de lire la propriété 'codeResponse' de null" – wcolbert

0

Je ne sais pas pourquoi il retournerait null, mais j'utilise normalement $this->data pour récupérer des données de formulaire.

Et avez-vous essayé debug($this->params)? Si vous n'avez pas de formulaire non-AJAX pour tester la requête, utilisez Firebug ou Wireshark pour voir ce qui est renvoyé par le serveur pour l'appel debug() — car il va casser le gestionnaire AJAX de jQuery en n'étant pas en JSON.