Ajax форму отправки. Форма представлена ​​дважды

Я работаю с cakePHP, и, на мой взгляд, у меня есть форма, которая имеет кнопку отправки ajax. Я сделал это с помощью помощников торта.

    <form method="post" class="form-class" id="form-id" name="form1" style="display: none">
                *[content for the form]*
                    <?php
                    echo $ajax->submit('Ok',
                            array(
                                       'id'=> 'submit1',
                                        'url'=> array('controller'=>'c','action'=>'action1'),
                                        'complete'=> 'jsfunction()'

                                ));
                    echo $form->button('Submit',array('id'=>'cancel','value'=>'Cancel','onClick'=>'clickCancel()'));
                    ?>


</form>

Когда я нажимаю "Отправить", действие контроллера вызывается дважды. Я искал stackOverlow, если этот вопрос существовал, но не смог найти правильное решение. Там нет синтаксических ошибок.

Помощь будет по достоинству оценена. Благодарю.

2 ответа

Решение

Похоже, обработчики событий ajax не блокируют поведение по умолчанию. Попробуйте установить встроенное поведение при отправке формы, чтобы предотвратить его (как это делает помощник торта):

<form onsubmit="event.returnValue = false; return false;" method="post" class="form-class" id="form-id" name="form1" style="display: none">

Я рекомендую проверить FormHelper для некоторых полезных ярлыков вокруг этого.

Это автоматически сгенерированный код:

 $("#submit1367508668").bind('click', function(){ 
     $.ajax({
              async:true, 
              type:'post', 
              complete:function(request, json) {
                   getServerResponse(request)
              }, 
              url:'/recipients/add', 
              dataType:'json', 
              data:$(this).parents('form:first').serialize()}); 
              blockUI(); 
     })
Другие вопросы по тегам