Ответ Ajax от контроллера CakePHP, возвращающий ноль - PullRequest
0 голосов
/ 06 июля 2010

Я пытаюсь проверить поле ввода с помощью вызова ajax к контроллеру CakePHP Мой 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.Что мне делать вместо этого?

Ответы [ 2 ]

1 голос
/ 06 июля 2010

Попробуйте что-то вроде:

$codePassed = $_POST['code']

Вы также можете попробовать поместить:

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

где-то там и проверить вывод в tmp/logs/debug.log

Использование firebug поможет отладить транспорт.

0 голосов
/ 06 июля 2010

Не знаю, почему было бы возвращать нуль, но я обычно использую $this->data для извлечения данных формы.

А ты пробовал debug($this->params)? Если у вас нет формы, отличной от AJAX, для проверки запроса, используйте Firebug или Wireshark, чтобы увидеть, что сервер возвращает для вызова debug() & mdash; так как он сломает обработчик AJAX jQuery, не находясь в JSON.

...