1

ajaxで簡単なフォームメールをやろうとしています。しかし、フォームからデータを取得できません。

私のフォーム:

<?php echo $this->Form->create('Page', array('default' => false)); ?>
<?php echo $this->Form->input('texto', array('label' => FALSE, 'type' => 'textarea)); ?>
<?php echo $this->Form->submit('Enviar', array('id' => 'enviar'));
        echo $this->Form->end();

私のアヤックス:

$(document).ready(function() {

$('#enviar').click(function(){
$.ajax({
  type: 'post',
  complete: function(r){
    $('div.teste').html('<h4> Enviado!</h4>');
  }
  })
 })
});

コントローラー:

    if($this->request->is('ajax')) {
    debug($this->request->data);

App::uses('CakeEmail', 'Network/Email');
$Email = new CakeEmail('gmail');
$Email->to('xxxx@gmail.com');
$Email->subject('Nova Mensagem - Site Althi');
$Email->send($mensagem);

            }

}

そして、コントローラーがメールを送信します。メールは正常に送信されましたが、のデータthis->request->dataは空の配列です。問題はajaxから渡されたデータだと思います。助けてください。

4

2 に答える 2

0

dataajax 関数呼び出しで値を設定する必要があります。

$.ajax(
    thecontrollerurl,
    {data: $("#theformid").serialize()}
);

詳細はこちら: http://api.jquery.com/jQuery.ajax/

于 2013-05-15T01:23:57.603 に答える
-1
$data = $this->Js->get('#YourformORelementID')->serializeForm(array('isForm' => true, 'inline' => true));

その後

$this->Js->get('#enviar');
$this->Js->event('click', 
$this->Js->request(
    array('controller' => 'someController', 'action' => 'someAction'),
    array('async' => true, 'data' => $data, 'update' => 'div.teste')
));
于 2013-05-15T06:29:48.787 に答える