Отправка формы в CakePHP с использованием JQuery - PullRequest
0 голосов
/ 23 июня 2009

Я создал форму как

<?php echo $form->create('Result',array('action'=>'submit'));?>
    //some input text fields,texarea fields
    <?php echo $form->end('submit');?>

В моем коде JQuery я написал:

<script>
    $(document).ready(function(){
        var str,fields;
        function showValues() {
            str = $("form").serialize();
            $("#results").text(str);
        }

        $(".submit").click(function (){
            alert(str);
            $.ajax({
                type: "POST",
                url:"/results/submit"
                data: "str="+str,
                success: function(msg){
                    alert( "Data Saved: " + msg);
                }

            });
            return false;
        });//submit click
    });//document ready
</script>

Редактировать: добавлен URL в Ajax,

  Now when i click the submit button it alerts str correctly.. 
  Like my alert value is 
      _method=POST&name1=value1&name2=value2 

  But in the next alert of Data saved it shows only the _method=POST 

В моем контроллере результатов

 <?php
class ResultsController extends AppController 
{

var $name = 'Results';
var $helpers=array('Html','Ajax','Javascript','Form');
var $components = array( 'RequestHandler','Email');
var $uses=array('Form','User','Attribute','Result');
   function submit($id = null)
   {

    $str=$_POST['str'];
    echo "POSTED value ".$str;
   // echo $this->params['form']['str'];
  }

}

and my Results Table is having (id,form_id,attribute_id,label(eg .name1,name2),value(eg...value1,value2) )

Пожалуйста, предложите мне .. Есть предложения?

Ответы [ 4 ]

2 голосов
/ 23 июня 2009

Немного проблем:

  • Вы отправляете запрос Ajax, когда нажимается кнопка Submit, но не останавливаете событие click с чем-то вроде этого, поэтому в любом случае оно будет перенаправлено на / submitpage
        $(".submit").click(function (){
           // do something .. in your case Ajax request
           return false
        });

  • Итак, теперь, когда форма отправляется, Ajax-запрос отправляется, но вы все равно перенаправляетесь на / submit страницу, которая, я думаю, заполнила массив GET.пост.

  • Также в запросе Ajax отсутствует URL-адрес

Попробуйте использовать плагин Jquery Form, он значительно облегчает жизнь http://malsup.com/jquery/form/

0 голосов
/ 15 апреля 2015

Если вы хотите отправить свою форму с ajax. У Cakephp есть свой механизм для этого. Проверьте ниже код

<?php
$data = $this->Js->get('#yourFormId')->serializeForm(array('isForm' => true, 'inline' => true));
$this->Js->get('#yourFormId')->event(
                        'submit',
                        $this->Js->request(
                                array(
                                        'data' => $data,
                                        'async' => true,
                                        'dataExpression'=>true,
                                        'method' => 'POST'
                                )
                        )
                  );

echo $this->Form->create("myForm", array('default' => false));
echo $this->Form->input('name');
echo $this->Form->end();
echo $this->Js->writeBuffer(); 
?>
0 голосов
/ 07 августа 2012

попробуйте добавить e внутри функции click, а затем в первой строке add e.preventDefault (); чтобы предотвратить действие по умолчанию.

http://css -tricks.com / вытяжным ложно-и-предотвращения по умолчанию /

0 голосов
/ 23 июня 2009

В запросе ajax отсутствует URL. Должно быть:

$(".submit").click(function (){
            alert(str);
            $.ajax({
                url : "submiting.php"
                type: "POST",
                data: "str="+str,
                success: function(msg){
                    alert( "Data Saved: " + msg);
                }
            });
        });//submit click

После обновления:

Я не уверен, но в вашем файле submission.php вы не должны создавать экземпляр контроллера и явно вызывать функцию submit?

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