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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top