我有一个foreach循环,它使用一组变量来生成带有ajax调用的动态javascript。让我们说我有一个包含10个变量的数组,需要创建10个不同的JS脚本。这些脚本不应该立即执行,它们应至少延迟1-2秒。但是,我无法通过睡眠或等待来完成这项工作。这是我的代码:
<?php
foreach ($one as $two) {
$somevariable = $two['sth'];
?>
<script type="text/javascript">
$( document ).ready(function() {
var somevariable = <?php echo json_encode($somevariable); ?>;
// JS code with ajax call, using somevariable
});
</script>
<?php
sleep(2); // doesn't work, everything is executed at once
wait(2); // doesn't work, everything is executed at once
}
?>
我做错了什么?如果我回复脚本,代码会工作吗?我想避免这种情况,因为JS代码很长很复杂。
答案 0 :(得分:1)
你可以尝试这样的事情:首先,从你的php代码中形成一个javascript数组。
<?php
foreach ($one as $two) {
$somevariable[] = "'".json_encode($two['sth'])."'";
}
$jsArray = '['.implode(',',$somevariable).']';
?>
然后将数组传递给你的javascript并运行一个间隔为2秒的循环。
<script type="text/javascript">
$( document ).ready(function() {
var somevariablearray = <?php echo $jsArray; ?>;
var ln = somevariablearray.length();
for (i = 0; i < ln; i++) {
var somevariable = somevariablearray[i];
setTimeout(function(){
console.log("Wait 2 sec before next call");
}, 2000);
// JS code with ajax call, using somevariable
}
});
</script>
代码未经过测试,可能无法按预期工作,但只是为了给您一个大致的想法。