【问题标题】:Sending multiple forms at once with Ajax使用 Ajax 一次发送多个表单
【发布时间】:2009-09-15 12:43:35
【问题描述】:

这是一个技术设计问题,而不是语法问题。

我有一个大页面,其中有 9 个表格对应于不同的表格。我已经与设计搏斗了,我没有出路,我必须通过 ajax 将所有表单发送到服务器进行处理。有很多相互关系。我也不能将这些表格合并成一个大表格。所以问题是通过 ajax 发送大量表单的最佳方式是什么。使问题更加复杂的是,动态表单具有相同名称的字段。

我正在尝试以下技术:
1.序列化每个表格, 2. 将表单名称添加到每个字段名称 3. 将表格的序列化版本合二为一 4. 将该组合的序列化表单作为一个发布到服务器 5. 在服务器端将它们分解为单独的数组,然后最终执行应用程序逻辑

我只是不知道是否有一个行之有效的更简单的解决方案,我正在从一个鼹鼠山上造一座山

【问题讨论】:

  • 有什么方法可以在一个大的 Ajax 调用中提交它们?简单的方法(这对于像 Ajax 这样挑剔的东西很重要)是使所有字段成员具有相同的表单,并使用后端脚本进行委托和逻辑。似乎更防弹。
  • 是的,我可以将它们组合起来。我正在描述我将如何做到这一点 - 通过组合序列化形式。无论如何,我必须在将每个表单发送到 Ajax 之前对其进行序列化。

标签: php javascript ajax


【解决方案1】:

如果真的无法重新设计页面,那么您的解决方案对我来说似乎简单明了,根本不是“山”式。不过,对我来说,您对页面的描述令人尖叫“重新设计”,尽管我当然没有足够的信息来处理。

这样的重新设计之一是在发生字段更改时将其发送到服务器,而不是等待并提交整个事情。如果您需要用户在完成后明确提交整个事情,服务器端可以将它们保持为“待处理”。但这取决于服务器资源的费用等。

【讨论】:

  • 这将是这两种技术之间的决定 - 一次全部或零碎。每个都有其应用程序的复杂性。它类似于带有header 和detail 依赖的订单录入系统,并且detail 有自己的依赖关系。谢谢你的想法
【解决方案2】:

您应该能够毫不费力地发送 9 个单独的 AJAX 请求(假设 a:每个不依赖另一个的响应,并且 b:这不是一直发生的事情)。

使用您的 javascript 库(您正在使用一个,对吗??) 只需遍历您的表单并通过 AJAX 提交每一个。我认为它可能一次只处理 2 个,但如果这对您的设计来说不是问题,那么一切都应该是甜蜜的。

这肯定会使等式中的 PHP/服务器端部分变得更加简单。

如果您使用的是高流量网站,那么您可能希望减少发出的请求数量,但您当前的设置可能会运行良好。

【讨论】:

  • 请注意:如果您确实发送九个请求,请注意,在第一对请求之后,它们将排队并连续发生,而不是并行发生,甚至如果您异步发送它们。大多数浏览器和许多服务器都会限制相同端点之间的并发请求(通常一次两个)。所以可能需要一些时间。
  • 这带来了依赖点。当更新必须连续发生时,至少其中一些,你不能一次发送它们,而是必须等到一个完成,在发送第二个之前使用它的结果。那会增加总时间。我必须在每个表单的持续更新和将数据保持在“待处理”模式之间做出选择,直到用户按照您推荐的 T.J.或者将所有表单合并为一个提交,并让一个服务器程序解析和处理它。谢谢大家!
【解决方案3】:

我会准备一个 javascript 调度程序,它可以巧妙地完成发布数据的工作。因此,当按下提交按钮时,它会收集所有需要的数据,然后将数据发送到服务器端的适当控制器。 同时,它可能会阻止表单,或显示“处理中...”弹出窗口。

【讨论】:

  • 他说的不就是他在做的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多