JavaScript setTimeout函数未按预期执行

时间:2011-08-24 13:11:41

标签: javascript forms iframe settimeout

我在这里疯狂地想弄清楚为什么这个剧本不再按预期执行(昨天工作得很好,但是我做了一些小改动而没有支持它......现在我可以找出问题所在。)

    <form method="POST" name="inventory_check" id="inventory_check">    
        <input type="text" name="stock_part" id="part_input">
        <input type="hidden" name="site" value="2">
        <input type="submit" value="Check Stock" id="submit">
    </form>

    <?php
        if(isset($_POST['stock_part'])) {
            $part = strtoupper($_GET['stock_part']);
            $site = $_POST['site'];
            $filename = 'system/inventory/'.$part.'.txt';
            if(file_exists($filename)) {
                $handle = fopen($filename, 'r');
                $content = fread($handle, filesize($filename));
                $content = trim($content, '&l0O(10U');
                $content = trim($content, 'E');
                fclose($handle);
                date_default_timezone_set('UTC');
                $mod_date = (filemtime($filename));
                $current_date = time();
                $subtract_date = ($current_date - $mod_date);
                $subtract_date = ($subtract_date/3600);
                if ($subtract_date <= 12) {
                    $stock = number_format($content);
                    echo '<script>document.inventory_check.style.display="visible";</script>';
                    echo '<div id="stock_results">There are '.$stock.' '.$part.' in stock.</div>';
                }
                else {
                    echo 'File too old.';
                }
            }
            else {
                echo '<iframe src="http://example.com/inventory_check.php?part='.$part.'&site='.$site.'" height="50" width="150"></iframe>';
                echo '<script>document.inventory_check.style.display="none";</script>';
                echo '<div align="center"><img src="http://www.aifittingsproto.com/images/load.gif"><br /><br />Searching</div>';
                echo '<script>setTimeOut("recheck()", 2000);</script>';
            }
        }
    ?>
    <script>
    function recheck() {
        document.inventory_check.stock_part.value="<?php echo $part ?>";
        document.inventory_check.site.value="<?php echo $site ?>";
        document.inventory_check.submit();
    }
    </script>

基本上,这会检查我们内部服务器上的某个项目的库存(与Web服务器不同的域)。我想要完成的是部件号中的用户键...首先它检查我们的服务器上是否存在ftp-ed文件..如果它检查它检查的时间是否比12小时更新,然后如果是的话显示它。如果没有,它会打开一个iframe并将变量发送到我们的内部服务器进行处理,这些都按预期工作。我的问题是,我需要能够在变量通过iframe传递之后重新检查文件是否存在。我尝试通过重新发送变量并每2秒提交一次表单来设置它。查看源代码,所有变量都按预期填充,等等,但它没有循环并重新提交表单。任何建议为什么失败,或更好的方法?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您应该尝试将setTimeout("window.reload()", 2000)替换为setTimeout("window.reload", 2000)。我的理解是你需要传递没有括号的函数来超时。