0

私は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>

[送信]をクリックすると、コントローラーアクションが2回呼び出されます。この質問が存在する場合はstackOverlowを検索しましたが、有効な解決策が見つかりませんでした。構文エラーはありません。

助けていただければ幸いです。ありがとう。

4

2 に答える 2

1

これは自動生成されたコードです:

 $("#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(); 
     })
于 2011-01-30T12:44:42.993 に答える
1

ajaxイベントハンドラーがデフォルトの動作をブロックしていないようです。フォームのonsubmit動作をインラインで設定して、それを防止してみてください(ケーキのヘルパーが行うように)。

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

これに関するいくつかの便利なショートカットについては、 FormHelperをチェックすることをお勧めします。

于 2011-01-31T16:52:01.090 に答える