2010-04-28 168 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)' />"); 
});