如何使表单提交同步
How to make form submission synchronous?
由于javascript(包括表单提交)是同步和单线程模型,除了ajax调用。对吗?但我面临着一个问题。
我在第1行提交表单,然后关闭弹出窗口。发生的是自我。在表单提交之前关闭get调用。这里它在异步模式下运行。表单提交是一个异步过程吗?如果是,我怎么能使代码后表单提交同步?(我不想使用setTimeOut和ajax)
这是我的相关jsp代码
function clickSave()
{
document.form.action="customerAction.do";
document.form.submit();// line 1
self.close();// line 2
}
更新:-看起来我需要纠正自己的表单提交是异步过程,如每是表单提交同步或异步?所以问题是我如何使自己。与表单提交紧密同步
因为javascript(包括表单提交)是同步的和单一的除了ajax调用之外的线程模型。对吗?但我正面临着一个关于这个的问题。
JS对每个事件监听器都是异步的。Ajax允许异步模式,将结果作为事件返回。
JS大多不是并发的:一次只执行一个函数。然而,在最新版本中,有方法在JS中创建后台"并发"线程(1)
JS在单线程上运行。(除了后台线程)
我在第1行提交表单,然后关闭弹出窗口。什么发生的是自我。在表单提交前关闭get调用
那是不可能的。
表单提交是一个异步过程吗?
提交是异步的,也就是说,JS将继续运行并结束。
你可以测试这个例子(2)。
如果是,我如何使代码后表单提交同步?(我不要使用setTimeOut和ajax)
Submit将重新加载整个页面,因此JS将结束,之后,窗口将从服务器加载带有表单结果的新页面。你可以在这个新页面中加入一个新的JS来"继续"。
如果您不想重新加载整个页面,您必须使用AJAX,在这种情况下,您有两个选项:
- 异步:你可以设置一个事件监听器来接收和使用结果。
- 同步:你的页面将阻塞,直到结果准备好。
注意:(1): https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers?redirectlocale=en-US& redirectslug = DOM % 2 fusing_web_workers
(2):
<html>
<body>
<script type="text/javascript">
function click2()
{
document.getElementById('form1').submit();
for(var i=0; i < 1000000000; i++);
window.open('http://www.stackoverflow.com');
}
</script>
<button onclick="click2();"> click </button>
<br/><br/>
<form id="form1" action="http://www.duckduckgo.com" method="get">
<input type="text" value="hello"/>
</form>
</body>
</html>
- HTML表单提交时未执行外部函数
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 将图像上传ajax与表单提交ajax相结合
- Javascript无法处理表单提交
- 如何在我的情况下禁用表单提交
- 加载后的页面与ajax表单提交不起作用
- angularjs-控制器在表单提交时未调用
- 禁用带有字符白名单的表单提交
- 如何使用Google Analytics跟踪表单提交
- 使用javascript将表单提交到iframe目标中
- e.preventDefault在表单提交时被忽略
- AngularJS JQuery Ajax表单提交等效
- JavaScript表单提交帮助
- PHP表单提交和重定向
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- 设置同步/异步函数序列的正确方法,所有这些函数都可以停止表单提交和进一步处理
- 如何使表单提交同步
- 同步表单提交时,张贴到iframe
- jQuery带超时的同步表单提交
- 在表单提交之前与AngularJS同步调用服务器