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