Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript form.submit定时如何工作?_Javascript - Fatal编程技术网

Javascript form.submit定时如何工作?

Javascript form.submit定时如何工作?,javascript,Javascript,在我们的代码库中,我遇到了一些对我来说非常危险的javascript代码 function SaveAndClose() { //etc etc some validation TheForm.submit(); window.close(); } 也许我误解了表单提交时间是如何工作的。我希望有人能启发我: 1) 什么时候提交表单? 2) 关闭对表单提交有何影响?这里可能有比赛条件吗 我最初预计关闭不会执行(执行将在提交时终止),但我看到的行为是提交和关闭都在执行(在FF中)-数据

在我们的代码库中,我遇到了一些对我来说非常危险的javascript代码

function SaveAndClose()
{
  //etc etc some validation
  TheForm.submit();
  window.close();
}
也许我误解了表单提交时间是如何工作的。我希望有人能启发我: 1) 什么时候提交表单?
2) 关闭对表单提交有何影响?这里可能有比赛条件吗

我最初预计关闭不会执行(执行将在提交时终止),但我看到的行为是提交和关闭都在执行(在FF中)-数据被持久化到DB(通过表单的post操作页面),并且窗口确实正在关闭。

submit()
是一个异步调用。
它在后台启动HTTP请求,然后继续在页面上运行代码

我不知道关闭浏览器窗口是否会中止HTTP请求。

但是,如果这是在弹出窗口中,则表单可能会提交到父窗口(使用
target
属性),因此这无关紧要。

它没有使用target。。。如果没有关闭按钮,则会显示窗体的“操作后”页面。我很好奇这个异步调用是如何工作的——它是否只是在我的所有javascript代码完成后才开始执行?我需要担心竞争条件吗?@csauve:它会立即发送请求(我假设),然后在网络调用期间继续执行代码。我不知道这是否是一种安全模式;我建议
target
在家长中使用
。感谢您的帮助!我会尝试一下,但这肯定会让我走上正确的方向