我正在尝试通过AJAX动态更新PHP页面上的文本。但是,不是文本以不同的时间间隔出现,而是所有的文本都是同时出现的。也许这是一个错误的方法。
index.html
<html>
<head>
<title>Please Update!</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$.post("hello.php", function(data){
var success = $("#update");
success.css("color", "green");
success.html("> \r " + data + ".");
});
});
</script>
</head>
<body>
<div id="update"></div>
</body>
</html>hello.php
<?php
echo "Hello World\n";
sleep(1);
echo "\rFoobar\n";
sleep(1);
echo "\rBazboo\n";
?>我希望文本在一秒钟后自动重写,但它一下子就像桶一样沿着管道传了下来。;_;
发布于 2021-01-12 12:39:51
对此不太确定,但也许能帮到你...
在PHP中
<?php
$result[] = "Hello World\n";
$result[] = "\rFoobar\n";
$result[] = "\rBazboo\n";
print_r($result);
?>在Ajax结果中
$.post("hello.php", function(data){
for(let i = 0; i < data.length; i++) {
setTimeout(() => {
// your stuff to do is here by 1 second interval...
var success = $("#update");
success.css("color", "green");
success.html("> \r " + data[i] + ".");
}, 1000*i);
}
});简单表示法
var data = ["Hello World\n","\rFoobar\n","\rBazboo\n"];
for(let i = 0; i < data.length; i++) {
setTimeout(() => {
console.log(data[i]);
}, 1000*i);
}
发布于 2021-01-12 13:05:57
按照安东尼的建议。您可以在php中创建一个数组,并将其编码为Json,然后创建一个settimeout()。
php
$data = array("Hello World","Foobar","BazBoo");
echo json_encode($data);jQuery ~ JavaScript
$.ajax({
method: "GET",
url: "hello.php",
success: (res) => {
for (let i = 0; i < res.length; i++) {
setTimeout(() => {
// or use .html(res[i])
$("#update").text(res[i] + "<br>");
}, 1000 * i);
}
}
})https://stackoverflow.com/questions/65677905
复制相似问题