簡體   English   中英

防止表單在頁面加載時自動重新提交

[英]prevent form from automatically re-submitting on page load

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

如果我不將iframe包含在HTML標記中,或者不將其附加到DOM,則不會發生這種情況,但是我當然需要iframe。

所以我的問題是,我該如何預防呢?

:)

安德魯

將iframe附加到文檔就緒的文檔主體上。

$(function(){
    $("body").append("<iframe id='whatever' src='javascript:void(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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM