当前位置: 首页 > 面试题库 >

一个ajax调用阻止其他ajax调用

万浩淼
2023-03-14
问题内容

加载页面后,我将对php脚本执行Ajax调用,这将更新服务器。但是,此脚本有时可能需要一分钟才能完成,并且在脚本运行时,我无法执行我需要处理的其他Ajax调用-
即第一个Ajax调用不应中断其他Ajax调用。任何想法如何做到这一点?

首次Ajax通话:

$(document).ready(function () { 
    $.ajax({
        url: "checkForUpdatesByCoach.php",
        success: function(arg){
            if(arg == "200"){
                $('body').prepend("<div style='text-align:center;margin-bottom:-12px;' onClick='location.reload()' class='alert alert-success'>Dine hold er blevet opdateret.Tryk for at opdatere!</div>").fadeIn("slow");  
            }
        }
});
});

第二个Ajax调用(用户触发的调用):

$.ajax({
    type: "POST",
        data: {data:dataAjax},
        url: "updateSwimmer1.php",
        success: function(arg){
            //updating UI
        }
    });

问题答案:

腺苷的上述评论是正确的。

“在PHP中,一次只能在一个会话上运行一个脚本,以免覆盖会话数据等。因此,当在同一会话中对PHP脚本进行两​​次ajax调用时,第二个必须等待第一个完成”

为了加快处理速度,您可以提前写入和结束会话(session_write_close())以释放会话锁,并允许使用该会话的其他脚本继续。

注意:调用session_write_close后,您仍然可以从$ _SESSION变量中读取变量,但是您可能不再对其进行写入。

您可以在此处找到一个很好的示例:PHP会话锁–如何防止阻止html" target="_blank">请求

上面的链接提供的示例:

<?php
// start the session
session_start();

// I can read/write to session
$_SESSION['latestRequestTime'] = time();

// close the session
session_write_close();

// now do my long-running code.

// still able to read from session, but not write
$twitterId = $_SESSION['twitterId'];

// dang Twitter can be slow, good thing my other Ajax calls
// aren't waiting for this to complete
$twitterFeed = fetchTwitterFeed($twitterId);

echo json_encode($twitterFeed);
?>


 类似资料:
  • 问题内容: Ajax使用回调,因为它是同步的。 我希望对远程URL块的调用直到出现一些答案为止 ,就像在Ajax中一样,但是没有异步部分,或者我要说要进行JAX调用。 是否有任何技术可以使以下事情发生(使用JQuery)(…使用JQuery或其他解决方案): 我只是想知道-想学习。 实际上,有时会阻塞直到回复合适为止。我并不是说要浏览器阻止,而只是脚本运行时。 问题答案: 您可以在使用jQuery

  • 问题内容: 我有一个应用程序(),其中某些部分是通过IFRAMES呈现的。这些iframed部分与应用程序的其余DOM无关,因此我应用了该属性。 IFRAME的声明如下: iframed页面上有一个按钮,该按钮可以对同一Web应用程序进行AJAX调用,但是浏览器会发出一个显示为的错误消息,而不是a ,并且发生错误: 如果我在属性中添加,就可以了。据我在此处阅读的内容,它不应该影响AJAX调用。 为

  • 问题内容: 这个问题是面向jQuery的,但不一定是排他的。 简短的问题: 同步ajax调用会阻止正常按钮被单击吗? 我的测试表明这没有发生,但也许其他浏览器出了问题。 长的问题: 在我询问的另一个问题中,如何阻止ajax调用(我希望它阻止),这些家伙说浏览器在某些情况下会阻止。 实际上,甚至jQuery 的文档都说: 我正在尝试: 1.了解发生这种情况的方式/原因。 2.评估发生这种情况的可能性

  • 我们计划使用CXF为Java客户机代码生成Java类。我已经读到CXF是线程安全的,请参阅CXF常见问题解答。 但我找不到的是,对同一soap服务的两个线程中的两个调用是同时执行的,还是一个线程将阻塞另一个线程? 所以我们有多个线程调用相同的皂服务实例,比如 我需要知道是否只有一个肥皂呼叫在同一时间执行,即一个呼叫阻止所有其他呼叫,直到它完成;或者是否所有呼叫都在同一时间通过。

  • 问题内容: 我需要在购物车中构建一个功能,该功能在发生某些更改(例如,产品被删除)时使用AJAX从服务器中检索模板的更新副本。我无法修改服务器端代码,也无法修改使购物车首先运行的JavaScript。(我知道这并不理想,但事实就是如此) 我想做的是每次购物车更新时都运行自己的JavaScript。 我想知道是否可以侦听AJAX调用 ,并在每次生成代码时运行我的代码。 问题答案: 要跟踪HTML文档

  • 问题内容: 我想在click事件中进行三个Ajax调用。每个ajax调用都会执行不同的操作,并返回最终回调所需的数据。调用本身并不相互依赖,它们可以同时进行,但是当三个都完成时,我希望有一个最终的回调。 问题答案: 这是我写的一个回调对象,您可以设置单个回调以在全部完成后触发,也可以让每个回调都有自己的回调并在全部完成后触发它们: 注意 从jQuery 1.5+开始,您可以按照另一个答案中所述使用