加载页面后,我会对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)
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)
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |