2017-08-02 24 views
2

我在下面附加了我的php的簡化版本。 我有一個從多輸入欄+上傳文件選項。當進度條達到100%時未提交表格

當提交表單時,上傳欄會激活,當它達到100%時,我會看到「成功」警報,然後是「完成」警報。 (兩次???) 然而,不是「url:sendEmail.php」觸發形式「動作= sendEmail.php」 - 我想添加兩個,看是否有觸發。 注意,當我刪除ajaxFrom觸發器「sendEmail.php」時執行。

那麼我做錯了什麼?應該改變以實現「sendEmail.php」。 也爲什麼我看到成功&完成警報兩次? Success => complete => success => complete

基本形式:

<form id="formmail" class="form-horizontal" name="formmail" method="POST" action="sendEmail.php" enctype="multipart/form-data"> 
. 
. 
. 

我試圖(單獨的課程)都與一個提交按鈕:

<input class="btn btn-sm" name='submit' type='submit' id='submit' tabindex='100' value="Submit"/> 

和一個簡單的按鈕:

<button class="btn btn-sm" name='submit' id='submit'>Submit</button> 

javascript:

var progress 
$(document).ready(function(){ 
    $("#submit").click(function(){ 
     var form_data = $("#formmail").serialize(); 
     $("#formmail").ajaxForm({ 
      type: "POST", 
      url: "sendEmail.php", 
      data: form_data, 
      beforeSend: function() { 
       $("#progressBar").removeClass("hidden"); 
       progress = "0%"; 
       $('.progress-bar').css("width", progress); 
       $('.progress-bar').html(progress); 
      }, 
      uploadProgress: function (event, position, total, percentComplete) { 
       progress = percentComplete + "%"; 
       $('.progress-bar').css("width", progress); 
       $('.progress-bar').html(progress); 
      }, 
      success: function (data){ 
       alert("success"); 
      }, 
      complete: function(xhr){ 
       if(xhr.responseText) { 
        alert("complete"); 
       } 
      }, 
     }) 
     .submit(); 
    }); 
}); 
+0

你可以在'alert'成功後加''(「#formmail」)。submit()' –

+0

@PareshMaghodiya你試過了嗎?它會再次提交表格。 – Raptor

+0

是的,我嘗試過 - 我收到警報消息和上傳,但沒有提交表單。 「sendEmail.php」仍然沒有進行 –

回答

0

您的代碼有一個非常普遍的問題。默認情況下,提交按鈕(<input type="submit">)將自動提交表單。用jQuery綁定click()函數不會阻止表單提交。因此,每提交一次點擊按鈕,sendEmail.php可能會被調用兩次,一次通過HTML表單提交,一次通過JS。你可能只想要其中之一。

您可以將按鈕類型更改爲type="button",或者在click()函數中添加event.preventDefault()

順便說一句,這裏是你的代碼的一些建議:

  1. 爲HTML整潔,不要混用單引號在HTML結構&雙引號。另外,刪除未使用的classid屬性。
  2. 只使用小寫文件名。 URL中的大寫字符對用戶不友好。
+0

謝謝,這解釋了爲什麼我看到兩次提醒消息。 但爲什麼我不能執行PHP的動作? 我試着把action =「upload.php」 和在ajax url:「upload.php」 沒有進行? –

+0

您是否檢查過開發者控制檯中的網絡標籤?有沒有JS錯誤? – Raptor

+0

沒有錯誤。 當我刪除ajaxform的「sendEmail.php」進行。 –