2010-04-28 109 views
0

我正在使用jQuery將窗體的目標指向.submit()上的iframe。這是上傳文件。它工作正常,但是當頁面重新加載並且iframe被附加到DOM時,iframe會自動重新提交表單,導致在每次頁面加載時將相同的文件發送到服務器。防止窗體在頁面加載時自動重新提交

如果我不在HTML標記中包含iframe,或者不將它附加到DOM,這不會發生,但當然,我需要iFrame。

所以我的問題是,我如何防止這種情況?

:)

安德魯

+0

你能告訴我們你目前正在使用的代碼? – Sampson 2010-04-28 17:38:44

回答

0

所以,事實證明,如果當用戶重新加載頁面的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(); 
} 
0

追加對文件準備的iframe的文檔主體。

$(function(){ 
    $("body").append("<iframe id='whatever' src='javascript:void(0)' />"); 
});