0

所以,我在这里有点困惑。

我正在慢慢进入 ajax 或 HTML5 SSE,因为我列出了从长远来看,我想更新而无需用户刷新。但是,这里的小步骤,我从一个简单的函数开始,它应该告诉我列表从这里读取的文件何时发生变化,从另一台计算机插入条目。

代码:

<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 函数,它不应该能够在执行该函数时(每 7 秒)执行 PHP 来检查文本文件中的内容吗?因为它不是,我不明白为什么不。

我尝试在我的手机上将第 4 个帖子插入列表,手机的警报变为 4 和 4,但计算机仍然显示 3 和 3。我希望它显示 3 和 4。

谢谢

4

2 回答 2

2

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

提示 - 查看浏览器中的视图/源代码并查看页面中的实际内容。您的页面中没有 PHP。PHP 在页面创建时在服务器上运行一次。

于 2012-05-14T06:18:46.790 回答
1

不。

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

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

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

于 2012-05-14T06:19:07.797 回答