2012-05-14 53 views
0

所以,我在这里有点困惑。Javascript没有反映文件的变化

我正在慢慢地进入ajax或HTML5 SSE,因为我有一个列表,从长远来看,我希望在用户不必刷新的情况下进行更新。但是,在这里的宝贝步骤,我从一个简单的函数开始,它应该告诉我列表正在从这里读取的文件已经改变,从另一台计算机插入一个条目。

CODE:

<script type='text/javascript'> 
function CheckForChange(){ 
    alert("<?echo (count($listArray)) . ' and ' . count(file($filename_noformat))?>"); 
} 

setInterval("CheckForChange()", 7000); 
</script> 

listArray是PHP变量保持看到在页面上时,页面刷新,阅读从文本文件中一行行的列表(我正在移动到一个数据库,后来) 由于PHP变量只能在加载页面时执行,所以PHP只会反映执行PHP时文本文件中的内容。

但是,使用Javascript和setInterval函数,它不应该能够执行PHP来检查函数执行时(每7秒)文本文件中的内容吗?因为它不是,我不明白为什么不。

我尝试在4帖子到我的手机上的列表堵塞和手机的警报变为4和4,但计算机仍然说3和3我想它说3和4

谢谢

+0

不要将字符串传递给'setTimeout',它们很慢,很难调试,并且不能很好地与范围一起播放。传递函数。有[在manaual]中的例子(https://developer.mozilla.org/en/DOM/window.setTimeout)。 – Quentin

回答

2

setInterval()在您的页面执行本地JavaScript,而不是基于服务器的PHP。如果您希望它在不重新加载页面的情况下将内容发送到服务器,则必须使用ajax调用才能将某些内容实际发送到服务器,这可能会导致某些PHP执行。

提示 - 在浏览器中查看View/Source并查看页面中的实际内容。页面中没有PHP。当页面被创建时,PHP在服务器上运行一次。

1

  1. 的PHP在服务器上运行并输出一些文本。
  2. 服务器将该文本发送给客户端(浏览器)。
  3. 然后浏览器将该文本解释为HTML和JavaScript。

PHP只运行一次。它生成的JavaScript函数然后重复运行,但是从JavaScript的角度来看,该函数具有字符串字面值,而不是可执行的服务器端代码。

如果你想运行PHP,那么你必须向服务器发出一个新的HTTP请求。这需要重新加载页面或使用Ajax。