2014-12-28 60 views
0

我正在處理JS Ever ajax多個圖片上傳器。它工作真的很棒,但有一點。所有文件完成上傳後,我需要重新加載工作頁面。是的,有一個功能可以在上傳文件後執行以下操作:成功完成完成。但是這些回調是每個文件。這意味着如果我添加一個重載功能。第一個文件完成上傳後,該頁面將被重新加載。如何在ajax上傳完成後刷新當前頁面

我試過了。

complete:function(file,xhr){alert("ok")} 

它的工作原理!但是,自從我上傳了3個文件以來,它就是3個彈出窗口。上傳第三個文件後,我只需要一個「確定」提醒。請建議。

$('#uploader').JSAjaxFileUploader({ 
    uploadUrl: 'upload.php', 
    complete: function (file, xhr) { 
     $(alert("ok")); 
    } 
}); 

This is the DEMO.

+0

看起來你使用的是不提供enaugh信息做到這一點的插件。如果所有上傳的回調都完成,那將會很好,但它不會(我查看了源代碼)。 'complete()'確實指的是單個文件上傳,並且沒有簡單的方法來獲得總請求的文件上傳量(不是沒有編輯插件的源代碼)。 – bwitkowicz

回答

1

你可以只加一個計數嗎?

var count = 0; 
var length; 

$('#uploader').JSAjaxFileUploader({ 
    uploadUrl: 'upload.php', 
    complete: function (file, xhr) { 
    if (count === 0) { 
     length = $('.JSpreveiw li').length; 
    }  
    if (count === length - 1) { 
     alert('thanks for uploading!'); 
     window.location.reload(); 
    } 
    count += 1; 
    } 
}); 
+0

謝謝,但沒有工作。 :( – Wilf

+0

http://jsfiddle.net/y68zkup0/1/適用於我 – plondon

+0

非常感謝您的腳本工作!但我將結構調整爲原始腳本,否則上傳按鈕消失:http:// jsfiddle .net/nobuts/y68zkup0/5 /(它可能在這裏不起作用,但它對我的腳本來說是完美的) – Wilf

0

如果有可能獲得文件的上傳量,您可以在「完整」的回調其增加一個號碼進行功能。當該數字等於文件數量時,顯示警報並刷新頁面。

+0

我看着源代碼,沒有什麼像在插件API中公開的。 – bwitkowicz

+0

@ MrBr1ght請照亮我的方式。 – Wilf

+0

@威爾夫根據bwitkowicz這是不可能的。 – thepieterdc

0

使用隱藏字段在頁面上像<input type="hidden" id="hidUploadCount" value="0" /> 現在使用功能beforesend追蹤當前的上傳。和使用的完整功能重新加載頁面,如果計數正在進行上傳爲0即

$('#uploader').JSAjaxFileUploader({ 
    uploadUrl: 'upload.php', 
    beforesend:function(){  
    document.getElementById('hidUploadCount').value+=document.getElementById('hidUploadCount').value; 
    }, 
    complete: function (file, xhr) { 
    document.getElementById('hidUploadCount').value-=document.getElementById('hidUploadCount').value; 
    if(document.getElementById('hidUploadCount').value)==0) 
    { 
    alert("ok");//here u can reload the page 
    } 
    } 
}); 
+0

我試過但沒有運氣,根據這裏的例子:http://jseverdemo.0fees.net/JSAjaxFileUploader/Demo .html#div8。回調是每個文件的動作。你認爲它有可能成功嗎? – Wilf

+0

是的,我看到了你提供的鏈接,它和我上面提供的答案相同,看起來邏輯很簡單。你需要上傳3個文件,所以'beforesend'會執行3次,然後'complete'會執行3次,如果每次調用'beforesend'時增加一個變量的值,然後在調用'complete'時減少它的值第三個文件,它的值將變成3-3 = 0,你必須重新加載頁面,如果它的值是0.獲得我的觀點。 – gaurav

+0

您應該每次都嘗試'alert(document.getElementById('hidUploadCount').value)'知道實際發生了什麼。這會給你更清晰的畫面。您也可以使用全局變量而不是隱藏字段。 – gaurav