今天整理以前寫過的關於上傳檔案,並顯示進度條的程式程式碼,對該程式碼進行優化整理。解決了一直困擾的問題:有時進度條沒有達到100%,瀏覽器出現假死現象。在IE8、chrome測試非常完美。
專案需求:
上傳APK,顯示上傳進度條,上傳完成開始分析APK,並顯示:正在分析apk資料,請稍後... ,分析完成後,顯示:上傳成功,重新上傳
由於我電腦裝的是winxp英文版,IE預設的是IE7,在測試的時候發現進度條不顯示。百分比也不顯示。
排除問題:
1、將DOM改成jquery方式,不顯示
2、給遞迴呼叫加上延時,不顯示。加上延時程式碼:setTimeout("getProgress(+upid+)",500);
3、是否是容器層次問題導致?於是測試是否執行上傳期間模組。在頁面中隨便加個容器,寫個全域性變數i,在上傳期間呼叫的模組中寫入到該容器i++,顯示,說明正確呼叫
4、即然顯示,進度條和百分比都為0,是不是接收的`json資料有問題?
由於我返回的程式碼為:echo json_encode($arr); 本身就為json資料,但為了找出原因,將返回的資料在執行一次:var dataObj=eval("("+data+")");//轉換為json物件
顯示指令碼錯誤。
5、難道是快取?於是將
複製程式碼 程式碼如下:
$SON("",{progress_key:upid},function(result){
改為:
複製程式碼 程式碼如下:
$SON("",{progress_key:upid,time:(new Date())ime()},function(result){
完美解決問題。