JavaScript setTimeout函数未按预期执行

JavaScript setTimeout函数未按预期执行,javascript,forms,iframe,settimeout,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="

我想弄明白为什么这个脚本不再像预期的那样执行了,昨天它运行得很好,但是我做了一些小改动,没有备份它…现在我弄不明白问题出在哪里了

    <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秒提交一次表单来设置它。查看源代码,所有变量都按预期填充,等等。但它没有循环并重新提交表单。有什么建议可以解释为什么这是失败的,或者更好的方法?提前感谢。

您应该尝试将setTimeOuthindow.reload,2000替换为setTimeOuthindow.reload,2000。我的理解是,您需要传递不带括号的函数来超时。

发布代码生成的输出,而不是服务器端代码本身。我已经看到你的setTimeout调用使用了一个字符串作为参数,这是不推荐使用的,支持函数回调。输出在一定程度上似乎工作正常。如果文件存在,它将按预期正确显示。如果文件太旧,则会显示“文件太旧”。但是,如果文件不存在,将生成iframe,并按预期运行,隐藏表单,显示加载的gif,这就是它停止的地方。在此之后没有任何操作,因此它必须挂起setTimeout调用。请记住,我并不关心对输入进行清理等。我只是尝试先获得预期的功能,然后将其构建。setTimeout函数拼写为setTimeout-而不是setTimeout。JavaScript是区分大小写的,因此,除非您使用了自己的命名非常相似的函数,否则我猜这就是问题的一部分。抱歉,这一定是一个输入错误。我试过一些简单的方法。使用setTimeoutalert'Test',2000,它在没有问题的情况下工作;但是,setTimeOuthindow.reload,2000没有。