0

送信すると、jQueryAJAX呼び出しを介して検証をチェックするフォームがあります。

私のコードは次のようなものです:

$("#myForm").submit(function(){
    .....
    .....
    .....
    .....
    .....

    $.ajax({
        type:"POST",
        url:"<?php echo base_url();?>bTransJual/formTambahJual/ajaxCekStockJual/",
        data:  { prdIdUkuId: dataArrPrIdUkuId, qty: dataArrQty},
        dataType : "json",            
        success: function(data){
           if(data.sukses){
              //validasi lolos
              document.frmTransJual.submit();                                             
           }else{
              //validasi gagal
              psnErrNya = data.psnErr;
              $("#psnNotifikasiAjax").html(psnErrNya);
              $("#notifikasiAjax").show('normal');
              $("#imgLoadSubmit").hide();                                       
              return false;
           }
        }
     });
});

そして私のフォームタグ:

<form name="frmTransJual" id="myForm" method="post" action="some_url.php">

ajaxが成功すると、値データが返されます。このdata.suksesがtrueの場合、フォームに送信してもらいます。document.frmTransJual.submit();を使用します。送信しますが、機能しません。誰かがこれに対する解決策を持っていますか?

4

4 に答える 4

1

その理由は、無限ループを使用しているためです。同じ関数が再び呼び出されます。

あなたはこのように使うことができます

divを作成する

 `<div id="submit">Submit form</div>`


 $("#submit").click(function(){
$.ajax({
    type:"POST",
    url:"<?php echo base_url();?>bTransJual/formTambahJual/ajaxCekStockJual/",
    data:  { prdIdUkuId: dataArrPrIdUkuId, qty: dataArrQty},
    dataType : "json",            
    success: function(data){
       if(data.sukses){
         $("myform").submit();                                             
       }else{
          //validasi gagal
          psnErrNya = data.psnErr;
          $("#psnNotifikasiAjax").html(psnErrNya);
          $("#notifikasiAjax").show('normal');
          $("#imgLoadSubmit").hide();                                       
          return false;
       }
    }
 });

})

于 2012-09-25T16:04:33.343 に答える
1

document.frmTransJualと同じ形式$("#myForm")です。したがって、呼び出すdocument.frmTransJual.submit();submit、無限ループで関数が再度呼び出されます。

于 2012-09-25T16:05:15.607 に答える
0

「AJAX」の「A」は「非同期」を表します。ハンドラーsubmit関数は、AJAX呼び出しが完了するずっと前に戻ります。AJAXコールバックのブランチfalseから戻ることは、コールバックの戻り値に影響を与えることはできません。elsesubmit

于 2012-09-25T16:03:17.903 に答える
0

これは、送信がAJAXリクエストの完了を待たないためです。非同期です。

コールバック関数から呼び出しが出るまでに、要求は長い間なくなっています。

于 2012-09-25T16:03:57.110 に答える