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

Nie*_*bæk 4 php ajax jquery

加载页面后,我会对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");  
            }
        }
});
});
Run Code Online (Sandbox Code Playgroud)

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

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

Kor*_*eyD 5

adeno上面的评论是正确的.

"在PHP中,一次只有一个脚本可以在同一个会话上运行,以便不会覆盖会话数据等.因此,当在同一个会话中对PHP脚本执行两次ajax调用时,第二个必须等待第一个完成"

为了帮助加快速度,您可以提前写入和结束会话(session_write_close())以释放会话锁定并允许使用会话的另一个脚本继续.

注意:在调用session_write_close之后,您仍然可以从$ _SESSION变量中读取,但是您可能不再写入它.

你可以在这里找到一个很好的例子:PHP会话锁 - 如何防止阻止请求

从上面的链接提供的示例:

<?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);
?>
Run Code Online (Sandbox Code Playgroud)