首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP和Ajax更新值

问PHP和Ajax更新值
EN

Stack Overflow用户
提问于 2021-01-12 12:06:29
回答 2查看 46关注 0票数 0

我正在尝试通过AJAX动态更新PHP页面上的文本。但是,不是文本以不同的时间间隔出现,而是所有的文本都是同时出现的。也许这是一个错误的方法。

index.html

代码语言:javascript
复制
<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

代码语言:javascript
复制
<?php
    echo "Hello World\n";
    sleep(1);
    echo "\rFoobar\n";
    sleep(1);
    echo "\rBazboo\n";
?>

我希望文本在一秒钟后自动重写,但它一下子就像桶一样沿着管道传了下来。;_;

EN

回答 2

Stack Overflow用户

发布于 2021-01-12 12:39:51

对此不太确定,但也许能帮到你...

在PHP中

代码语言:javascript
复制
<?php
        $result[] = "Hello World\n";
        $result[] = "\rFoobar\n";
        $result[] = "\rBazboo\n";
        print_r($result);
 ?>

在Ajax结果中

代码语言:javascript
复制
$.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);
   }
});

简单表示法

​

代码语言:javascript
复制
var data = ["Hello World\n","\rFoobar\n","\rBazboo\n"];
 for(let i = 0; i < data.length; i++) {
    setTimeout(() => {
         console.log(data[i]);
    }, 1000*i);
 }

​

票数 0
EN

Stack Overflow用户

发布于 2021-01-12 13:05:57

按照安东尼的建议。您可以在php中创建一个数组,并将其编码为Json,然后创建一个settimeout()。

php

代码语言:javascript
复制
$data = array("Hello World","Foobar","BazBoo");
echo json_encode($data);

jQuery ~ JavaScript

代码语言: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);

        }


    }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65677905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档