2010-07-06 3 views
0

Я пытаюсь проверить поле ввода с помощью Ajax вызова к контроллеру CakePHP Мой Ajax является:Ajax Ответ CakePHP контроллера возвращения нулевой

$("#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); 
    } 

I Я уверен, что я использую $ this-> params здесь неправильно, чтобы получить доступ к данным, отправленным из запроса ajax. Что я должен делать вместо этого?

ответ

1

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

$codePassed = $_POST['code']

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

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

где-то там и изучить вывод в tmp/logs/debug.log

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

+0

После попытки вашего suggestiong $ codePassed = $ _POST [ «кода»] я смог вернуться назад, что в боевую готовность (данные) я проверил это, изменив свой выход контроллера из эха json_encode ($ codeResponse); - echo json_encode ($ codePassed); Это сработало. Но когда я пытаюсь вернуть $ isCodeValid Я получаю нулевой ответ. – wcolbert

+0

Возможно, что-то не так с моим $ isCodeValid = $ this-> find ('count', array ('conditions' => array ('AlphaUser.code' => $ codePassed))); – wcolbert

+0

Я проверил содержимое заголовка, и ничего не получаю, но в хром-отладчике есть ошибка, в которой говорится: «Uncaught TypeError: Can not read property» codeResponse »null» – wcolbert

0

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

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

Смежные вопросы