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();