Javascript 逐一显示每个结果
我有一个代码,它在Javascript 逐一显示每个结果,javascript,php,ajax,while-loop,Javascript,Php,Ajax,While Loop,我有一个代码,它在循环中增加URL参数,直到$I等于10。发生这种情况时,它将显示每个数字,最多10个(当$i停止增加时)-在这种情况下,它将是1、2、3、4、5、6、7、8、9 问题是,只有当$i等于10时,它才会显示1、2、3、4、5、6、7、8、9-我需要它在发生时显示数字(而不是等待$i等于10!) 在脚本结束之前,没有稳定的方法让PHP脚本生成输出 如果需要倒计时,可以将while循环放入Javascript中,让它调用PHP脚本,如下所示: test2.php?i=1 然后 等等。
循环中增加URL参数,直到$I
等于10。发生这种情况时,它将显示每个数字,最多10个(当$i
停止增加时)-在这种情况下,它将是1、2、3、4、5、6、7、8、9
问题是,只有当$i
等于10时,它才会显示1、2、3、4、5、6、7、8、9-我需要它在发生时显示数字(而不是等待$i
等于10!)
在脚本结束之前,没有稳定的方法让PHP脚本生成输出
如果需要倒计时,可以将while循环放入Javascript中,让它调用PHP脚本,如下所示:
test2.php?i=1
然后
等等。您也可以使用.queue()
,.append()
php
我真的认为async
会对您有所帮助。你能试试这个密码吗
<script>
$(document).ready(function(){
$.ajax({
type: "POST",
url: "test2.php",
async: false,
success: function(data) { $("#here").html(data); }
});
});
</script>
$(文档).ready(函数(){
$.ajax({
类型:“POST”,
url:“test2.php”,
async:false,
成功:函数(数据){$(“#这里”).html(数据);}
});
});
在浏览器中运行脚本需要多长时间?@Akshay实际上只需要几秒钟。然而,这是一个例子-我可以将$I
增加到10000,这确实需要一段时间。我还压缩了代码。如果间隔相同,只需使用$interval或$timeout。如果代码完全用JS?或Node.JS编写,是否可以这样做?这不是PHP的限制,而是web服务器用来与PHP通信的API。PHP本身将在代码中点击print语句后立即生成输出。通常情况下,这样做是有充分理由的,您不希望将不完整的HTML标记发送到浏览器。@bobjomes是的,请参阅我的修订答案。@bobjomes JSFIDLE,chaining.promise()。then()
要在队列中的所有函数都完成时调用函数,我如何增加请求数?@bobjomes“我将如何增加请求数?”您可以将项目添加到arr
arrayNo我的意思是,当它变为1、2、3、4、5时,我希望如何同时运行两个项目以加快速度up@bobjomes这是一个稍微不同的问题,尽管可能。将不得不调整$.ajax()
调用一次执行两个,但由于每个调用请求不同的文件,因此无法确定进程是否会更快。注意,最初的问题是“逐个显示每个结果”,而不是一次两个time@bobjomes没问题。只要告诉我这对你有没有帮助就行了。
test2.php?i=1
test2.php?i=2
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")
if (isset($_POST["n"])) {
$content = file_get_contents("https://www.example.com?id=" . $_POST["n"]);
echo $content
}
<script>
$(document).ready(function(){
$.ajax({
type: "POST",
url: "test2.php",
async: false,
success: function(data) { $("#here").html(data); }
});
});
</script>