2012-09-25 205 views
0

我有一个表单,当我提交它会检查通过jQuery AJAX调用一些验证。document.form.submit()不工作在jQuery的AJAX调用

我的代码是这样的:

$("#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"> 

如果阿贾克斯成功它会返回一个值的数据,如果这data.sukses是真的我想提交表单。我使用document.frmTransJual.submit();提交它,但它不起作用。任何人都有这个解决方案?

+1

注意:您的'return false;'什么都不做,因为您无法从AJAX回调中返回。 –

+0

这是您网页上唯一的表单吗? –

+0

@RocketHazmat感谢您的信息。 :) –

回答

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

})

+0

ho .. okey ..我现在得到它.. 所以它只是不可能做到这一点。 :) –

+1

您可以通过创建一个简单的div做到这一点,一个Ajax调用添加到div.if比提交此表,以便您的服务器将获得 – StaticVariable

+0

你是什么意思的值,则返回true“添加AJAX调用该div“ 你能给我一个演示代码吗?谢谢 –

0

“AJAX”中的“A”用于“异步”。您的submit处理函数在您的AJAX呼叫完成之前很久就会返回,您的AJAX回调的else分支返回false不会影响返回值,您的回调值为submit

0

这是因为提交不会等待AJAX​​请求完成的。它是异步..

通过调用出来的要求早已逝去的回调函数的时间。

+0

所以这意味着这只是无法做到这一点?在ajax调用完成后提交此表单? –

1

document.frmTransJual是相同的形式$("#myForm")。因此,调用document.frmTransJual.submit();将再次调用submit函数,在无限循环中。

+0

那么有没有什么办法可以使这个表单提交时,Ajax调用成功?或者绝对没有办法做到这一点,因为它是不可侵犯的? –

+1

为什么在提交表单之前要做AJAX调用?通常你张贴的形式正常,或者你使用AJAX来发布它,你为什么想做两者兼而有之?如果你想重定向,只需使用'window.location'。 –

+0

实际的形式有很多价值在it..i想我会更好,如果表单的输入先被确认的形式进行POST之前。 如果我通过PHP验证,那么我必须与用户输入这是很多... 感谢您的信息BTW对于这一点,非常赞赏再次填充输入.. :) –