2

我为表单提交事件添加了一个钩子(表单提交上还有其他事件),并且需要使用创建元素(脚本)将提交报告给另一个域上的服务器。

如何使提交功能等待以确保创建元素(脚本)已成功访问服务器?

4

3 回答 3

5

像这样的东西怎么样:

<script>
  function handleSubmit(form) {
    doSomethingAsynchron(
       function() { // callback function
          form.submit();
       }
    );
    return false;
  }
</script>

<form onsubmit="return handleSubmit(this);" ... >
...
</form>
于 2010-12-22T15:08:36.057 回答
1

尝试利用 JavaScript事件。您可以注册任何要在特定事件发生时调用的函数。要么利用一些预定义的事件来发出代码完成的信号,要么使用一些类似 Yahoo! 的东西。库来创建可以代表服务器请求完成的自定义事件(通过简短的谷歌搜索找到最后一个,但看起来很有希望)。

我希望 JS 有一个内置的自定义事件架构,但显然它没有。因此,您需要使用像 Yahoo! 这样的外部库!事物。也许这种情况在不久的将来会改变。这超出了我的知识范围。但我当然可以推荐使用事件,因为它们完全解决了您描述的问题。

(或者,您可以像 Thariama 所描述的那样进行忙碌等待。在可能的情况下,通常不鼓励使用睡眠周期或不忙于等待。)

插图:

<script>
// register function b() for custom event

function a() {
    //upload
    // (takes time... but no busy wait)

    //fire custom event
}

function b() {
    //do some other code
}
</script>

<body>

<form onsubmit="a()">
</form>

</body>
于 2010-12-22T12:12:54.463 回答
0

一个不太优雅的解决方案是使用时间间隔来检查脚本是否已访问服务器(检查响应)。为此使用setInterval

于 2010-12-22T11:55:53.043 回答