gpt4 book ai didi

javascript - jQuery - 异步 Ajax 请求?

转载 作者:搜寻专家 更新时间:2023-10-31 20:41:12 27 4
gpt4 key购买 nike

我尝试使用 ajax 请求和响应异步,但它似乎不起作用。我每秒钟发送一次 ajax 请求。控制台应该每秒打印一次“DON'T WAIT”,每 5 秒打印一次“WAIT5”(在 php 中休眠)。但是发生的事情是,“不要等待”被记录下来,然后整个站点/脚本等待 5 秒,两条消息都被记录了 5 次。我怎样才能使这个异步,所以“不要等待”真的每秒都出现并且不等待其他脚本?

//编辑:这是一个例子。这个想法是稍后执行一个代码(不是 setInterval ),它需要 10 秒才能获得完成状态。在这个时候,另一个 setInterval 应该正常工作而不是等待! sleep 为 sleep(rand(5,10));

Javascript:

function getProductionStatus() {
jQuery.ajax({
url: "report.sessioncall.php",
dataType: "json",
async: true
})
.done(function(data) {
console.log(data);
});
}
function getProductionStatusLong() {
jQuery.ajax({
url: "report.sessioncall1.php",
dataType: "json",
async: true
})
.done(function(data) {
console.log(data);
});
}
window.setInterval(getProductionStatus, 1000);
window.setInterval(getProductionStatusLong, 1000);

PHP:

<?php
session_start();
sleep(5);
$_SESSION["jobs"] = "WAIT5";
$sessionstatus = json_encode($_SESSION["jobs"]);
echo $sessionstatus ;
?>

<?php
session_start();
$_SESSION["jobs"] = "DONT WAIT";
$sessionstatus = json_encode($_SESSION["jobs"]);
echo $sessionstatus ;
?>

最佳答案

规则

默认情况下,Ajax 请求是异步的。如果您不使用 $.ajaxSetup({async:false}) 更改它, 不需要写 async: true在您的 ajax 请求中。

这样做的原因是,在大多数情况下,发出同步 ajax 请求是不好的做法,因为您可以通过阻止浏览器对用户输入使用react来恶化您的用户体验。

您的具体解决方案

只是改变

window.setInterval(getProductionStatusLong, 1000);

window.setInterval(getProductionStatusLong, 5000);

关于javascript - jQuery - 异步 Ajax 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21161964/

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