gpt4 book ai didi

php - 防止 jQuery AJAX 调用等待上一个调用完成

转载 作者:可可西里 更新时间:2023-11-01 13:54:17 27 4
gpt4 key购买 nike

我搜索过 SO,每个问题似乎都在询问如何等待 AJAX 调用完成。我在问如何不等待 AJAX 调用完成。

我有一个电子商务网站,它通过 PHP 进行一些繁重的图像处理。操作通过 AJAX 调用触发。

我试图加快用户体验,所以我修改了代码,首先让 PHP 渲染缩略图(操作很快完成),然后触发第二个 AJAX 调用,告诉 PHP 渲染完整图像(可以花几分钟)。

“添加到购物车”操作也是一个 AJAX 调用。 问题是在上一个 AJAX 调用完成之前,“添加到购物车”调用无法完成。

序列:

  1. AJAX 调用 A 请求生成缩略图。
  2. 调用A的成功回调:
    一种。显示/启用“添加到购物车按钮”
    b.触发 AJAX 调用 B,以生成完整图像。
  3. 点击“添加到购物车”会触发 AJAX 调用 C,直到调用 B 完成后才会完成。

相关的javascript:

/** Call A - make call for thumbnail generation **/
$.ajax({
url: 'index.php?route=decorable/image/thumbnail',
type: 'post',
data: image_data,
dataType: 'json',
success: function(json) {
if (json['success']) {
$('#button-cart').show();
/** Call B - make call for *full* layout generation **/
$.ajax({
url: 'index.php?route=decorable/image',
type: 'post',
data: image_data,
dataType: 'json'
});
});

/** Call C - this AJAX call starts, but does not complete, until call B completes **/
$('#button-cart').click(function() {
$.ajax({
url: 'index.php?route=checkout/cart/add',
type: 'post',
data: cart_data,
dataType: 'json',
success: function(json) {
if (json['success']) {
$('.success').fadeIn('slow');
}
}
});
});

我是不是误会了,或者即使调用 B 没有完成,调用 C 也应该能够完成?

如果您认为 PHP 阻碍了体验,那么有没有一种好方法可以让我触发 PHP 开始执行,但仍然发送回缩略图 AJAX 调用的响应?

最佳答案

根据我的经验,这是由使用了 PHP session 引起的,当您在代码(所有 ajax 请求)中确定您不必修改 session 时,您应该调用:

session_write_close()

这将允许同时发出其他请求。

进一步阅读:http://www.php.net/manual/en/function.session-write-close.php

关于php - 防止 jQuery AJAX 调用等待上一个调用完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23087423/

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