2011-03-21 43 views
0

使用表單將文件上傳到我的服務器並且我想在表單驗證時加載進度條。這是代碼,我用jQuery:表單驗證時Ajax加載不起作用


$(document).ready(function(){ 
    $("#uploadform").submit(function(e){ 
     var valid_form = validateForm(); 

     if (valid_form){ 
      $("#pb").load("/php/progressbar.php"); 
     } 
     return valid_form; 
    }); 
});

的問題是我收到提交此消息後:

GET http://ftplink.wedo/php/progressbar.php undefined (undefined)

但奇怪的是,我試圖反轉IF的條件,當窗體不驗證,實際上發生ajax加載。到底是怎麼回事??

+1

在validateForm方法中返回/正在發生什麼? – 2011-03-21 15:33:47

+0

validateForm()中有什麼? – corroded 2011-03-21 15:34:28

+0

如果表單填寫正確,則validateForm返回true;如果未驗證,則返回false。 – 2011-03-21 15:55:55

回答

0

不能說出你的問題的所有內容。我猜想表單提交發生在有活動的ajax請求的時候。您應該返回false,然後在ajax完成加載進度條時提交表單。

if (valid_form){ 
    $("#pb").load("/php/progressbar.php", function(){ 
     $("#uploadform").unbind('submit').submit(); // unbind so you are not recursive 
    }); 
} 
return false; 
+0

是的!這工作!謝謝!你今天是我的英雄!仍然好奇爲什麼它不是「正常的方式」。我認爲這不是我第一次遇到這個問題...你說了一些關於「主動Ajax請求」的內容。當表單正在填充時,我確實做了更多的Ajax調用,但ajax請求如何保持活動?我想一旦它被加載,它就關閉了,不是嗎? – 2011-03-21 15:43:11

+0

請通過點擊左側的勾號來接受此答案 - 您將獲得額外聲望的英雄獎勵;) – Yaronius 2011-03-21 15:55:23

+0

歡迎。原因是因爲Ajax是異步發生的。所以如果你發送一個ajax請求,他們發佈表單 - 文檔將嘗試卸載,但ajax尚未完成。如果此答案有幫助,請接受解決方案。 :) – 2011-03-21 15:57:32