逐个显示每个结果

时间:2016-07-30 22:08:16

标签: javascript php ajax while-loop

我有一个代码可以在while循环中增加一个URL参数,直到$i等于10.当发生这种情况时,它会显示最多10个的每个数字(因为这是{{ 1}}停止增加) - 在这种情况下,它将是1,2,3,4,5,6,7,8,9。

这个问题是只有当$i等于10才会显示1,2,3,4,5,6,7,8,9时 - 我需要它来显示数字,因为它发生(而不是等待$i等于10!)。

$i

test2.php:

<div id="here"></div>

<script>
$(document).ready(function(){
        $.ajax({
            type: "POST",
            url: "test2.php",
            success: function(data) { $("#here").html(data);  }
        });
});
</script>

3 个答案:

答案 0 :(得分:1)

您也可以使用.queue().append()

按顺序请求每个文件
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

$({}).queue("ajax", $.map(arr, function(item, i) {
  return function(next) {
    return $.ajax({
              type: "POST",
              url: "test2.php",
              data: {n:item}
           })
           .then(function(data) { 
             $("#here").append(data);  
             next();
           });

  }
})).dequeue("ajax")

PHP

if (isset($_POST["n"])) {
  $content = file_get_contents("https://www.example.com?id=" . $_POST["n"]);
  echo $content
}

答案 1 :(得分:0)

在脚本结束之前,没有稳定的方法让PHP脚本生成输出。

如果你需要倒计时,你可以在你的Javascript中放入while循环并让它用以下内容调用PHP脚本:

test2.php?i=1

然后

test2.php?i=2

答案 2 :(得分:0)

我真的认为async会帮助你。你可以试试这段代码吗?

<script>
$(document).ready(function(){
        $.ajax({
            type: "POST",
            url: "test2.php",
            async: false,
            success: function(data) { $("#here").html(data);  }
        });
});
</script>