【问题标题】:jQuery: Making simultaneous ajax requests, is it possible?jQuery:同时发出 ajax 请求,有可能吗?
【发布时间】:2009-05-22 14:37:31
【问题描述】:

我正在使用 jQuery 尝试同时检索多条数据。要求的背景是不同位的数据需要不同长度的时间才能可用,所以我想在返回时显示每一块。

问题是请求似乎“排队”;直到前一个请求返回后,下一个请求才会执行。经过大量阅读,似乎“异步:假”选项可能是我所追求的,但这似乎没有任何区别。

从 TCP/IP 调试中我可以看到浏览器不会启动多个连接;当先前的请求返回时,它使用相同的连接。

我曾经见过很多网站同时通过 ajax 加载数据,所以显然这是可能的,但我正在努力让这个工作正常进行。

这是我的代码:

$.ajax({
    type: "GET",
    async: false,
    url: "foo1.php"
    });
$.ajax({
    type: "GET",
    async: false,
    url: "foo2.php"
    });
$.ajax({
    type: "GET",
    async: false,
    url: "foo3.php"
    });

【问题讨论】:

  • 你为什么不看文档?你应该查一下你使用的每个选项的含义。 async: false 与您所描述的内容相反

标签: jquery ajax


【解决方案1】:

您需要异步(这是默认设置)。浏览器在任何给定时间将您限制为两个请求。这是 HTTP 规范的一部分。 (HTTP 1.1 specification, section 8.1.4)

将请求放入队列是您的最佳选择。

我应该注意,这可以在 Firefox 和其他一些浏览器中被覆盖。 (但由于它不是标准的,它对你没有多大帮助)

【讨论】:

  • 谢谢。你让我停止寻找从来没有问题的地方。事实证明,这与 PHP 以及由于会话锁定而顺序处理使用相同会话变量的请求的方式有关(为什么它不锁定写入,而不是在整个执行期间似乎很疯狂)。无论如何,一个非常简单的 'session_write_close()' 已经解决了所有问题。干杯。
  • 无论如何,很高兴知道这一点。你能发布一个参考吗?
  • @Monty 很好地指出了 PHP 问题和 session_write_close() - 为我工作 - 谢谢!
  • 刚刚找到了这个并解决了我自己的并发ajax问题,这要归功于会话变量的事情。谢谢和++++!
  • 好奇这个限制采用什么形式,Ajax 错误? PHP错误?无声延迟?
【解决方案2】:

浏览器将您限制为两个同时请求。您可能想要使用队列管理器,如下所示: http://www.protofunc.com/scripts/jquery/ajaxManager/

【讨论】:

  • 浏览器行为正常,是 PHP 出现“故障”。
猜你喜欢
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 2012-11-13
  • 1970-01-01
  • 2011-02-28
相关资源
最近更新 更多