jquery Ajax cakephp: электронная почта не получает и отображает соответствующее имя из базы данных - PullRequest
0 голосов
/ 28 марта 2012

Когда пользователь вводит свой адрес MerryParentEmail, соответствующее имя должно быть извлечено из базы данных и отображено во входном текстовом поле MerryParentName.Я уже пытался сделать это с ajax, jquery и php, и это сработало.Но теперь соответствующее имя не отображается, когда я использую ajax, jquery и cakephp.

Вывод оповещения: данные% 5BMerryParent% 5D% 5Bemail% 5D = b

Может кто-нибудь указать, где я ошибаюсь?Спасибо.

default.ctp (файл макета)

<script type="text/javascript">
  $(document).ready(function(){
  $("#MerryParentEmail").keyup(function(){
    //txt=$("#MerryParentEmail").val();
    txt=$("#MerryParentEmail").serialize();
    alert(txt);
    $.post("../merry_parents/getname",txt,function(result){
      $("#MerryParentName").val(result);  
    });
  });
});
 </script>

view.ctp

<?php
echo $this->Session->flash();
//echo $this->Form->create('MerryParent', array('default'=>false));
echo $this->Form->create('MerryParent');

echo '<fieldset>';
echo '<legend>Parent Information</legend>';
echo $this->Form->input('MerryParent.email');
/*if (isset($name))
   echo $this->Form->input('MerryParent.name', array('label'=>'Parent/Guardian Name','value'=>$name));
else*/
   echo $this->Form->input('MerryParent.name', array('label'=>'Parent/Guardian Name'));

echo '</fieldset>';

//echo $this->Form->end('Submit');

 ?>

merry_parents_controller.php

<?php
 class MerryParentsController extends AppController{
public $many_children_flag='false';
var $name='MerryParents';

function beforeFilter()//executed before any controller action logic
{   parent::beforeFilter();
    $this->Security->validatePost=false;  //set to false to completely skip the validation of POST request
        //parent::beforeFilter();
    if(isset($this->Security) && $this->RequestHandler->isAjax()){
        $this->Security->enabled = false;
        Configure::write('debug', 0);
        $this->autoRender=false;
        }   
}

function getname(){
 if (!empty($this->data)){
    //var_dump($this->data);

    $merryparent_info=$this->MerryParent->getMerryParents($this->data['MerryParent']['email']);
    //print_r($merryparent_info);
    $name=$merryparent_info['MerryParent']['name'];
    $this->set('name',$name);
    //$this->render('/merry_parents/ajax_input');
    }
}
function view(){
    //$name='';
    //var_dump($this->data);
    //$this->getname();
}

merry_parent.php модель

function getMerryParents($field_value){
    if (is_int($field_value))
        $conditions=array('merryParent.id'=>$field_value);
    else
        $conditions=array('merryParent.email'=>$field_value);

    //debug($conditions);

    $merryparent_info=$this->find('first',array(
                                'conditions'=>$conditions,
                                'recursive'=>-1   //fetches merry_parents table data only not the associated data
                                ));

    //debug($merryparent_info);
    return $merryparent_info;
}

1 Ответ

1 голос
/ 28 марта 2012

Попробуйте:


//add
$this->layout = false;  
//and instead of setting name simply echo the name from your function, like
echo $name;

Надеюсь, что поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...