0

私はcakephpコントローラーへのajax呼び出しで入力フィールドを検証しようとしています。私の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");
            }
        });
    });

私のコントローラーコード

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);   
    }

ここでは、ajaxリクエストから送信されたデータにアクセスするために$this->paramsを間違って使用していると確信しています。代わりに何をすべきですか?

4

2 に答える 2

1

次のようなものを試してください:

$codePassed = $_POST['code']

あなたも入れてみるかもしれません:

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

どこかで出力を調べますtmp/logs/debug.log

firebugを使用すると、トランスポートのデバッグに役立ちます。

于 2010-07-06T14:58:05.253 に答える
0

nullが返される理由はわかりませんが、私は通常、$this->dataフォームデータをフェッチするために使用します。

そして、あなたは試しましたdebug($this->params)か?リクエストをテストするための非AJAXフォームがない場合は、FirebugまたはWiresharkを使用して、debug()呼び出しに対してサーバーから返されるものを確認します。これは、JSONに含まれていないためにjQueryのAJAXハンドラーが破損するためです。

于 2010-07-06T15:03:01.227 に答える