2011-08-02 36 views
1

我目前正在使用PHP uploadprogress擴展進行表單上傳。我在這裏遵循了一個教程,其中的一切都如下例所示:http://www.ultramegatech.com/blog/2010/10/create-an-upload-progress-bar-with-php-and-jquery/jQuery:暫停表單默認操作

但是,在該示例中,表單以iframe爲目標。接收調用的PHP腳本會檢查數據並確保其所有有效等,如果其成功重定向,並且如果失敗,則會使用錯誤突出顯示重新加載頁面。

所以......我是假設,如果我拿了...

target="upload-frame" 

...走了形式將作爲正常的,做它的東西,這確實。

但是現在沒有目標或iframe(而且我也從JavaScript的刪除此太)的JavaScript函數,循環更新進度條似乎並沒有從getprogress得到任何數據傳回()PHP函數。

我可以手動訪問它,並有信息。

我假設在表單被提交時,默認情況下,由於瀏覽器在等待文件上傳時有效地嘗試重定向,因此無法在頁面上進行其他調用。有沒有人知道一種方式,我可以阻止重定向行爲,直到文件上傳完成?

+0

嗯,我覺得你真的可以做的唯一途徑「 ajax「文件上傳是通過使用iframe hack。如果內存服務器不工作,否則我不認爲jquery ajax實際上可以發佈文件數據。 – TommyBs

回答

1

我發現的解決方案是繼續使用iframe作爲表單的目標。然後,當上傳完成後,我對iframe的內容執行一些檢查。

首先使用jQuery我檢查#上傳幀的內容,看它是否包含任何重定向頁面或有錯誤的同一頁,就像這樣:

$('#upload-frame').contents().find('.errors').size(); 

如果錯誤的大小大於0然後我知道發生了一個問題,這需要顯示給用戶。所以,我做了以下機身更換:

var html = $('#upload-frame').contents().find('body').html(); 
$('body').html(html); 

如果沒有錯誤,我只是做了重定向至目標頁面,如下所示:

window.location = "finished.php";