2012-09-13 48 views
8

我想爲blueimp jquery-file-upload插件實現進度條,但progress回調僅在上傳開始後立即觸發一次,並且與數據一起啓動。加載== data.total。進度回調始終顯示100%上傳jquery-file-upload插件

<input data-url="/ads/32/photos" id="image" name="image" type="file" /> 

$(".upload-btn input").fileupload({ 
    dataType: "json", 
    progress: function(e, data) { 
     alert(data.loaded + "/" + data.total); 
    }, 
    done: function(e, data) { 
     alert("done"); 
    } 
    }); 

秒後(上傳完成時)完成的回調被觸發,我可以通過服務器日誌確認上傳成功。當我嘗試使用progressall回調時,我也會得到相同的行爲。

不確定它是否相關,但我目前沒有包含jquery.fileupload-fp.js庫,因爲添加了這個庫可防止發生任何上載活動。

任何想法我做錯了什麼?

+1

哎@克里斯,是你能解決這個問題?我面臨同樣的問題。 – varunvlalan

回答

-1

進度函數alert爲字符串「100%」?我對插件不熟悉,但函數的alert中的表達式將所有內容都轉換爲String類型。所以我希望它顯示字符串「x/y」。

在任何情況下,你應該改變progress功能

alert(data.loaded/data.total); // no quotes, no +'s 

如果這些屬性(totalloaded)是正確的,那麼就應該給你你想要的行爲。

編輯:爲了闡明發生了什麼,如果這回答了您的問題:+運算符根據其操作數的數據類型以不同的方式運行。如果你把兩個數字合起來,它可以作爲一個算術加法運算符。如果甚至一個的運算符是一個字符串,則+將首先將其他操作數更改爲字符串,然後連接它們。最終結果將是一個字符串,而不是數字。

var two = "2"; // two is a String data type 
alert(two + 2); // Returns "22" as a String 

var two = 2; 
alert(two + 2); // Returns 4 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition