【问题标题】:Javascript Function Runs Once [closed]Javascript函数运行一次[关闭]
【发布时间】:2015-12-21 16:41:26
【问题描述】:

我制作了一个 Javascript 脚本,该脚本成功地从 SQLite 数据库中提取,该数据库同时由 Python 脚本添加。我无法弄清楚 CGI,但我有这个工作......在一定程度上。

当我第一次运行该页面时,它运行良好。它成功地使用 PHP 为我的每个列提取了最后输入的值,将这些值存储到独立的 Javascript 变量中,清理它们使其只是数据,然后打印它们。这是我在一次执行整个脚本时看到的示例:

问题是:刷新按钮不起作用。按钮本身有如下代码:

<button onclick="grabLatestRecord()">Refresh</button>

整个脚本在这里:http://pastebin.com/Ym74DhJU

我尝试添加刷新功能,以便在打印清理后的数据后将其发送到刷新功能,然后重新开始该过程,但这不起作用。它必须与PHP有关,对吧?

【问题讨论】:

  • 您将 PHP 直接输出到 JS 中。 PHP 只运行一次。您可能需要阅读有关 AJAX 的信息。
  • @ɴᴀᴛʜ 我不明白为什么每次我尝试为温度、湿度和时间变量分配新值时都不执行它。为什么它不起作用,就好像我将它设置为函数一样,该函数返回一个然后分配给变量的值?
  • PHP 是服务器端的,每次请求运行一次,您需要使用 AJAX 向服务器发送另一个请求以获得另一个结果。
  • PHP 脚本比 javascript 先运行。因为 php 在服务器上运行。您可以通过浏览器的开源检查正在发生的事情。

标签: javascript php python refresh


【解决方案1】:

您需要了解您的嵌入在您的页面中的 PHP 确实有效。这是一个非常重要的概念,可以帮助您了解 PHP、服务器、Javascript、浏览器等系统如何工作。

PHP 只在服务器上运行。

您网页中的 Javascript 仅在浏览器中运行。

网页中嵌入的 PHP 仅在第一次在服务器上创建页面时运行一次,然后当它发送到浏览器时,页面中不再有 PHP。那时它只是 Javascript、HTML 和 CSS。因此,调用您的 grabLatestRecord() 函数不会运行任何 PHP。首次创建页面时,这已经在服务器上进行了评估。如果你在浏览器中做一个 View/Source,你可以查看实际的 grabLatestRecord() 函数,发现浏览器中没有 PHP。

如果您想从网页执行一些 PHP 以获取最新记录,那么您必须对您的服务器进行 Ajax 调用。这有点像远程 PHP 调用。客户端 Javascript 通过 Ajax 调用向您的服务器发送请求。服务器使用您的结果响应 Ajax 调用。结果返回到浏览器中的 Javascript,然后您可以使用 Javascript 更新页面内容。

关于如何设置 PHP 来处理 Ajax 调用的文章有数不胜数,所以我建议您阅读那里的内容,如果遇到困难,请再回来提出一个新问题。

【讨论】:

  • 谢谢!这确实是我第一个使用 PHP 和 SQLite 的项目,所以我尽量做到了,而不必问问题。我现在将研究 AJAX!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
相关资源
最近更新 更多