Javascript 发布到iframe时提交同步表单
我有一个表单,可以将数据发布到隐藏的Javascript 发布到iframe时提交同步表单,javascript,forms,submit,synchronous,Javascript,Forms,Submit,Synchronous,我有一个表单,可以将数据发布到隐藏的,以防止页面更改。但是,我希望“保存”按钮可以执行两个连续的submit()s,一个接一个 <form name="updatedocform" id="updatedocform" method="post" action="http://foo.bar" enctype="multipart/form-data" target="hiddenframe"> ... <input type="submit" onclick=
,以防止页面更改。但是,我希望“保存”按钮可以执行两个连续的submit()
s,一个接一个
<form name="updatedocform" id="updatedocform" method="post" action="http://foo.bar" enctype="multipart/form-data" target="hiddenframe">
...
<input type="submit" onclick="save(); return false;" value="Save" />
</form>
<iframe name="hiddenframe" id="hiddenframe"></iframe>
但是,第二个submit()
在第一个完成加载之前被调用。有没有办法让第二次提交等待第一次提交完成
我可以使用
setTimeout()
,但我想要一个更干净的解决方案,它不依赖于网络的速度。您可以使用jquery$.ajax()
您必须截获第一次提交的click事件,通过ajax发送表单数据,然后可以连接到ajax插件的完整回调函数中,并进行第二次iframe提交
$("submit").click(function () {
$(this).closest("form").ajax({
url: "test.html",
data: $("form").serialize(),
success: function(){
//fire second submit event
}
});
});
希望这有帮助。我想最基本的解决方案(除了循环setTimeout)可能是使用类似这样的函数,而不是save()函数 然后在那个iframe onload上
top.secondSave();
我不能使用Ajax,因为它不直接支持文件上传(至少不是一种可移植的方式)。这允许您指定iframe:true作为一个选项来执行您试图执行的操作。我监视信号量!:D
var firstSaving = false;
function save() {
document.updatedocform.submit();
firstSaving = true;
}
function secondSave() {
if(firstSaving)
{
firstSaving = false;
document.updatedocform.submit();
}
}
top.secondSave();