while循环中的Javascript在循环结束之前不会改变任何东西

时间:2014-01-30 23:01:18

标签: php

我有两个单独的文件。

iframe在父窗口中执行changePercent命令,但它不会立即更改数字,只会在循环结束后更改。有没有什么办法解决这一问题?需要这个以获得进度条。

提前致谢!

这是我在浏览器中打开的文件

<span id="test">1</span><br />
<iframe src="script.php?league=Nemesis"></iframe>

<script type="text/javascript">
function changePercent(val) {
    document.getElementById("test").innerHTML=val;
}
</script>

这是嵌入式iframe

<?php set_time_limit(0);
include('../assets/includes/functions.inc.php'); ?>
<?php
$i = 0;
$step = 200;
$end = 15000 - $step;
$league = $_GET['league'];
$found = false;
$status = false;

while ($found == false && $i < $end) {
    if($i < $end) { $i = $i + $step; }
    $ladder = file_get_contents("http://api.pathofexile.com/ladders/".$league."?limit=".$step."&offset=".$i);

    $ladder = str_replace('"online":false', '"online":"no"', $ladder);
    $ladder = str_replace('"online":true', '"online":"yes"', $ladder);

    $json = json_decode($ladder, true);
    foreach ($json['entries'] as $address) {
        if($address['online'] = "yes") {
            $status = true;
            // do something
        }
    }

    ?>
    <script type="text/javascript">
        parent.changePercent('<?php echo $i ?>');
    </script>
    <?php
}
?>

2 个答案:

答案 0 :(得分:2)

php是服务器端语言。当php运行while循环时,这意味着浏览器仍在等待页面数据,只有在php完成时才会将其发送到浏览器。 在你的changePercent中,你有一个位于while循环之后的php代码,所以它会运行while循环,然后才能评估changePercent

中的php

所以没有“修复”,你应该学习网络编程的基础知识

答案 1 :(得分:0)

您在使用时退出PHP循环?&gt;尝试以下代码段。

echo '<script type="text/javascript"> parent.changePercent(' .  $i .'); </script>';

这将告诉PHP在每次循环执行时打印出该行。