Ajax Risposta da CakePHP controller ritorno nullo
-
02-10-2019 - |
Domanda
Sto cercando di convalidare un campo di input con una chiamata AJAX a un controller cakephp Il mio Ajax è:
$("#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");
}
});
});
Il mio codice di controllo
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);
}
Sono abbastanza sicuro che sto usando $ this-> params male qui per accedere ai dati inviati dalla richiesta Ajax. Cosa dovrei fare, invece?
Soluzione
Prova qualcosa di simile:
$codePassed = $_POST['code']
si potrebbe anche provare a mettere:
$this->log($codePassed,LOG_DEBUG);
da qualche parte in là ed esaminare l'output in tmp/logs/debug.log
Usando Firebug aiuterà il debug dei trasporti.
Altri suggerimenti
Non so il motivo per cui sarebbe ritornato nulla, ma io di solito uso $this->data
per andare a prendere i dati del modulo.
E hai provato debug($this->params)
? Se non si dispone di una forma non-AJAX per testare la richiesta, l'uso Firebug o Wireshark per vedere ciò che viene di ritorno dal server per la debug()
chiamata poiché si romperà gestore AJAX jQuery da non essere in JSON.