我正在使用jQuery將窗體的目標指向.submit()上的iframe。這是上傳文件。它工作正常,但是當頁面重新加載並且iframe被附加到DOM時,iframe會自動重新提交表單,導致在每次頁面加載時將相同的文件發送到服務器。防止窗體在頁面加載時自動重新提交
如果我不在HTML標記中包含iframe,或者不將它附加到DOM,這不會發生,但當然,我需要iFrame。
所以我的問題是,我如何防止這種情況?
:)
安德魯
我正在使用jQuery將窗體的目標指向.submit()上的iframe。這是上傳文件。它工作正常,但是當頁面重新加載並且iframe被附加到DOM時,iframe會自動重新提交表單,導致在每次頁面加載時將相同的文件發送到服務器。防止窗體在頁面加載時自動重新提交
如果我不在HTML標記中包含iframe,或者不將它附加到DOM,這不會發生,但當然,我需要iFrame。
所以我的問題是,我如何防止這種情況?
:)
安德魯
所以,事實證明,如果當用戶重新加載頁面的DOM存在的iframe,就會再次觸發形式,所以我乾脆直到用戶點擊發送沒有添加的iframe文件。
完整的代碼(有些是隻到我的項目有關,但這個想法是有:
function uploadHandler()
{
if ($.browser.safari || $.browser.opera || $.browser.msie)
{
setTimeout(uploadComplete, 5);
}
else
{
uploadComplete(this);
}
}
function uploadFile(e)
{
if($('.uploadFrame').length > 0)
{
uploadiFrameNode.remove();
}
n = 'f' + Math.floor(Math.random() * 99999);
uploadiFrameNode = $('<iframe class="uploadFrame invfr" src="about:blank" id="'+n+'" name="'+n+'"></iframe>');
uploadiFrameNode.load(uploadHandler);
$('body').append(uploadiFrameNode);
formNode.attr('action', _ajaxPath + "?drive=" + drive);
formNode.attr('target', n);
formNode.attr('method', 'POST');
formNode.attr('enctype', 'multipart/form-data');
formPathNode.val(tree[tree.length - 1].path);
}
function uploadComplete()
{
refresh(tree[tree.length - 1].path);
backToMenu();
fileReset();
}
追加對文件準備的iframe的文檔主體。
$(function(){
$("body").append("<iframe id='whatever' src='javascript:void(0)' />");
});
你能告訴我們你目前正在使用的代碼? – Sampson 2010-04-28 17:38:44