Javascript form.submit定时如何工作?
在我们的代码库中,我遇到了一些对我来说非常危险的javascript代码Javascript form.submit定时如何工作?,javascript,Javascript,在我们的代码库中,我遇到了一些对我来说非常危险的javascript代码 function SaveAndClose() { //etc etc some validation TheForm.submit(); window.close(); } 也许我误解了表单提交时间是如何工作的。我希望有人能启发我: 1) 什么时候提交表单? 2) 关闭对表单提交有何影响?这里可能有比赛条件吗 我最初预计关闭不会执行(执行将在提交时终止),但我看到的行为是提交和关闭都在执行(在FF中)-数据
function SaveAndClose()
{
//etc etc some validation
TheForm.submit();
window.close();
}
也许我误解了表单提交时间是如何工作的。我希望有人能启发我:
1) 什么时候提交表单?2) 关闭对表单提交有何影响?这里可能有比赛条件吗 我最初预计关闭不会执行(执行将在提交时终止),但我看到的行为是提交和关闭都在执行(在FF中)-数据被持久化到DB(通过表单的post操作页面),并且窗口确实正在关闭。
submit()
是一个异步调用。它在后台启动HTTP请求,然后继续在页面上运行代码 我不知道关闭浏览器窗口是否会中止HTTP请求。
但是,如果这是在弹出窗口中,则表单可能会提交到父窗口(使用
target
属性),因此这无关紧要。它没有使用target。。。如果没有关闭按钮,则会显示窗体的“操作后”页面。我很好奇这个异步调用是如何工作的——它是否只是在我的所有javascript代码完成后才开始执行?我需要担心竞争条件吗?@csauve:它会立即发送请求(我假设),然后在网络调用期间继续执行代码。我不知道这是否是一种安全模式;我建议target
在家长中使用
。感谢您的帮助!我会尝试一下,但这肯定会让我走上正确的方向