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

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

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 回答