[英]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.