Ajax форму отправки. Форма представлена ​​дважды - PullRequest
0 голосов
/ 28 января 2011

Я работаю с 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 ]

1 голос
/ 31 января 2011

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

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

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

1 голос
/ 30 января 2011

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

 $("#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(); 
     })
...