2012-09-25 82 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對於這一點,非常讚賞再次填充輸入.. :) –