Formulir Ajax dikirimkan. formulir diserahkan dua kali

Saya bekerja dengan cakePHP dan menurut saya, saya memiliki formulir yang memiliki tombol kirim ajax. Saya merendernya menggunakan pembantu kue.

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

Ketika saya mengklik kirim, tindakan pengontrol dipanggil dua kali. Saya mencari di stackOverlow jika pertanyaan ini ada tetapi tidak dapat menemukan solusi yang valid. Tidak ada kesalahan sintaksis.

Bantuan akan sangat dihargai. Terima kasih.


person cowboybebop    schedule 28.01.2011    source sumber
comment
Sudahkah Anda memeriksa di browser yang berbeda???   -  person RSK    schedule 28.01.2011
comment
Bisakah Anda menampilkan kode apa pun dari halaman yang dihasilkan? (saya hanya bisa berspekulasi apa yang dilakukan $ajax-›submit(), alangkah baiknya melihat kode JS yang tampaknya dibuat secara otomatis untuk Anda di sisi klien).   -  person Brad Christie    schedule 30.01.2011
comment
Saya tahu ini tidak membantu, tetapi saya sendiri juga mengalami masalah yang sama. Saya sangat berharap seseorang dapat membantu dalam hal ini.   -  person    schedule 31.01.2011
comment
Seperti yang saya katakan kepada OP, bisakah Anda memposting kode yang dihasilkan di suatu tempat sehingga kita dapat melihat JS apa yang diterapkan ke halaman tersebut?   -  person Brad Christie    schedule 31.01.2011


Jawaban (2)


Sepertinya event handler ajax tidak memblokir perilaku default. Coba atur perilaku pengiriman formulir agar tidak terjadi (seperti yang dilakukan pembantu kue):

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

Saya sarankan untuk memeriksa FormHelper untuk mengetahui beberapa pintasan berguna seputar hal ini.

person Robin    schedule 31.01.2011

Ini adalah kode yang dibuat secara otomatis:

 $("#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(); 
     })
person Christopher    schedule 30.01.2011
comment
Sebenarnya saya menggunakan FormHelper bersama dengan pembantu Ajax untuk menghasilkan keluaran kode dan saya memodifikasi opsi untuk memasukkan bit event.returnValue = false karena itu adalah satu-satunya hal yang hilang, tetapi tetap tidak dapat dilakukan. - person Christopher; 02.02.2011