2013-03-15 47 views
2

我有這個帶有abort()的ajax文件上傳表單;功能。可通過單擊取消錨觸發:使ajax上傳abort-able只能在上傳進度完成之前

$('#cancel').click(function(){ 
    ajaxFileUpload.abort(); 
    $('#message').html('cancelled'); 
}); 

而且這種定位的是時隱時現的成功函數返回「successfullyUploaded」:

if(response == 'successfullyUploaded') {$('#cancel').hide(); }); 

此時文件上傳和爲時已晚取消上傳。大多數情況下,它工作得很好。但是,如果有人在處理上傳的php頁面上的文件上傳和包含接收成功數據的表單的頁面之間的瞬間點擊「取消」,它會說「取消」,但實際上上傳已完成。所以我想知道是否有某種方法可以檢測文件上傳的時間,比如95%完成,並且在那個時候隱藏'取消'定位符。這是可能嗎?謝謝

+0

是的,它是非常有可能的,但我不會要求它是最好的選擇。成功上傳和獲取數據之間的時間跨度應該在平均200ms以上。我個人不會擔心這一點,但如果必須的話,我會發送另一個Ajax請求,當你點擊取消按鈕,以確保上傳尚未完成之前'取消'上傳。 – 2013-03-15 22:11:12

+0

我知道這似乎有點微不足道。我只是不喜歡這樣的想法,即萬一發生這種情況,用戶會得到不正確的信息 – user2014429 2013-03-15 22:15:04

+0

我明白了。這是有點難以重現,否則我會深入瞭解。 – 2013-03-15 22:18:15

回答

1

一旦中止,您可能會向服務器發送第二個AJAX請求,告訴上傳已被取消,上傳的文件(如果存在)必須被刪除。

當您收到第二請求成功應答,你可以設置#message取消

+0

一個有效的解決方案,我會考慮這一點。感謝您的建議。 – user2014429 2013-03-15 23:05:10