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没有。