gpt4 book ai didi

javascript - 在 jQuery 函数中多次调用 ColdFusion.Ajax.submitform()

转载 作者:行者123 更新时间:2023-11-30 18:47:17 25 4
gpt4 key购买 nike

我有一个包含多个表单的页面。然后我有一个按钮,它有一个附加到它的 jQuery 单击事件处理程序,它为每个表单调用 ColdFusion.Ajax.submitform()。我的问题是 submitform() 仅适用于页面上的某些表单。其余表格不会保存。注意:我可以单独保存所有表单,因此我知道这不是我的“表单操作”代码的问题。

<script type="text/javascript">
$(function() {
$("#saveAll").click(function() {
ColdFusion.Ajax.submitForm( 'form1', 'multipleforms.cfm' );
ColdFusion.Ajax.submitForm( 'form2', 'multipleforms.cfm' );
ColdFusion.Ajax.submitForm( 'form3', 'multipleforms.cfm' );
ColdFusion.Ajax.submitForm( 'form4', 'multipleforms.cfm' );
ColdFusion.Ajax.submitForm( 'form5', 'multipleforms.cfm' );
ColdFusion.Ajax.submitForm( 'form6', 'multipleforms.cfm' );
ColdFusion.Ajax.submitForm( 'form7', 'multipleforms.cfm' );
});
});

location.href = 'http://localhost/multipleforms.cfm';
</script>

当我删除“location.href”行时,所有表单都已保存。有谁知道为什么那一行会导致不是所有的表格都被保存? 'location.href' 存在的原因是因为我想刷新页面,以便用户可以看到依赖于他们在表单中选择的值的数据;而且我不想使用“location.reload()”,因为它总是会生成一个弹出窗口来确认重新加载。还要注意,我试图避免使用一个大表单来保存表单数据。

谢谢。

最佳答案

这里的问题是 Ajax 中的 A。您正在异步提交七个表单,但每个提交都可以随时以任何顺序返回。如果由于服务器停滞而导致表格 5 需要一分钟才能返回,会发生什么情况?

您会遇到的另一个问题是,浏览器通常允许两到六个同时请求,因此尽管调用具有异步性质,但浏览器可能会停止等待连接。

如果您的应用程序依赖于七个表单的同时 ajax 提交,一种选择是尝试重构应用程序,以便您使用从所有相关表单中选择的动态参数进行一次 ajax 提交。

如果那不可能,另一种方法是将七个请求链接起来,每个请求都在其前任的回调中触发。像这样:

 ColdFusion.Ajax.submitForm( 'form1', 'multipleforms.cfm', function(){
ColdFusion.Ajax.submitForm( 'form2', 'multipleforms.cfm', function(){
ColdFusion.Ajax.submitForm( 'form3', 'multipleforms.cfm', function(){
// etc
});
});
});

这里我们有一系列的提交,每一个都在前一个完成时触发。如果在提交 form7 之前您的重定向不会发生,则该重定向将在最终提交的回调中:

 // forms 1 through 6, then inside the callback of form6:
ColdFusion.Ajax.submitForm( 'form7', 'multipleforms.cfm', function(){
location.replace('http://localhost/multipleforms.cfm'); // fires last
});

使用任何可能使浏览器停止运行的方法,您应该做的第一件事就是弹出一个微调器或进度消息,以便用户了解该应用程序正在运行。使用链式方法,您甚至可以在每个阶段完成时更新进度条。

最后一个更蛮力的选择是使调用同步Check out the asynch argument .当然,这导致重定向前的停顿,因此从用户体验的 Angular 来看,重构可能是最佳选择。

关于javascript - 在 jQuery 函数中多次调用 ColdFusion.Ajax.submitform(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5084849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com