来自CakePHP Controller的Ajax响应返回null

时间:2010-07-06 14:49:18

标签: ajax cakephp controllers

我正在尝试使用对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);   
    }

我很确定我在这里使用$ this-&gt; params错误来访问从ajax请求发送的数据。我应该做什么呢?

2 个答案:

答案 0 :(得分:1)

尝试类似:

$codePassed = $_POST['code']

你也可以尝试一下:

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

在那里某处检查tmp/logs/debug.log

中的输出

使用firebug将有助于调试传输。

答案 1 :(得分:0)

不知道为什么它会返回null,但我通常使用$this->data来获取表单数据。

你试过debug($this->params)吗?如果您没有非AJAX表单来测试请求,请使用Firebug或Wireshark来查看服务器返回debug()调用的内容 - 因为它会因为不在调用而破坏jQuery的AJAX处理程序JSON。