【问题标题】:Ajax blocks submit button from submitting / how to make it 100% async?Ajax 阻止提交按钮提交/如何使其 100% 异步?
【发布时间】:2016-01-16 13:53:41
【问题描述】:

总之,

  1. 我有一个带有提交按钮的表单和一个大约需要 10 秒才能完成的 ajax 函数(它调用另一个 .php 文件来更新一些后端记录)。

  2. 我刚刚注意到,如果我有 ajax 函数“正在进行”(在那 10 秒的过程中)。表单提交将等待 10 秒 ajax 调用返回然后提交。 (或者它可能正在提交,但表单提交需要 10 秒)

  3. 如果我等到ajax调用返回再提交,提交表单只需要1秒。

我认为 ajax 应该是“异步的”并且不应该阻止页面上的任何内容?我错了吗?我应该如何使其“异步”,以便在 ajax 运行时不会阻止页面上的任何其他链接或提交按钮?

明确一点:我正在尝试提交表单并让 ajax 调用并行运行。

【问题讨论】:

  • 请出示相关代码。目前尚不清楚您要完成什么。您是否尝试进行 Ajax 调用,然后在完成后提交表单?或者您是否尝试同时进行 ajax 调用和表单提交?
  • 这可能是由于 PHP 以及您的应用程序/服务器的配置方式造成的。如果您使用会话,PHP 可以强制每个会话一次请求一个请求,因此在 Ajax 请求完成之前它可能不会开始处理 <form> 请求。 Simultaneous Requests to PHP Script
  • @jfriend00 嗨,这是一个非常普遍的情况,所以我没有发布具体的代码。我正在尝试进行 ajax 调用并同时提交表单。我已将其添加到补充中。感谢您的帮助!
  • 很可能您的 PHP 一次只能处理一个请求。如果不知道您的整个设置,我们不可能知道。您可以通过查看浏览器中的网络选项卡来验证两个请求是一个接一个地发送的。
  • @JonathanLonowski 谢谢!大概就是这样。让我检查那个链接。谢谢!

标签: javascript php jquery ajax


【解决方案1】:

似乎从文件存储会话切换 -> 基于数据库的会话系统解决了这个问题。确实是 PHP 限制了每个会话 1 个请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2016-02-20
    • 2016-03-23
    相关资源
    最近更新 更多