【问题标题】:How to make it refresh in JavaScript and not affect the HTML?如何让它在 JavaScript 中刷新而不影响 HTML?
【发布时间】:2015-06-26 05:58:01
【问题描述】:

我有一个运行良好的代码,但我不知道如何将 JavaScript 放入其中以检查我的表“聊天”中是否有一个额外的结果,如果有它应该刷新页面,如果结果没有改变然后不刷新页面,对不起,我不知道什么时候涉及到 JavaScript。

聊天.php

require('checkformessages.php');
...

checkformessages.php

$sqlmessages = mysql_query("SELECT * FROM chat");
$numbermessages = mysql_num_rows($sqlmessages);


// JavaScript script (no idea what it's supposed to be
// but some kind of timer checking if there is new result in the database)

if($numbermessages===$Javascriptcheck) {
//do nothing
} else {
//it should refresh the chat.php because its required in the page
echo "<script>window.location = window.location.href;</script>";
}

【问题讨论】:

    标签: javascript php jquery mysql sql


    【解决方案1】:

    这太宽泛了,可以做更多的研究。不过,我不介意添加一些注释让您走上正轨:

    1. AJAX 请求来自浏览器。如果您定期检查某些内容,也许您需要一个向服务器发出请求的 JavaScript 计时器。
    2. 因为这是一个读操作,所以一个get 操作就可以了。您的脚本可能会从查询字符串中读取项目,然后以合适的消息格式进行响应。 JSON 现在很流行。
    3. 您返回的数据可能最好作为新消息数组。您确实可以只返回一个布尔值,如果存在新行则刷新整个页面,但这相当浪费。您不妨在 AJAX 回复中返回新行。
    4. 要获取新行,您需要在此表中设置一个时间戳,然后使用 AJAX 操作将最后一个已知的时间戳发送到服务器。新行是时间戳大于或等于所提供值的行。
    5. jQuery get() 方法可能是合适的。

    我建议您使用上述方法来帮助您入门 - 您可能需要使用搜索引擎来研究每一种方法,我鼓励您这样做。如果您仍然遇到困难,在线阅读一些示例/教程也可能会有所帮助。

    祝你好运!

    【讨论】:

    • 谢谢,所以最适合我的是 5 号。我猜是 JQuery ......但我仍然不知道 JQuery 是如何计算行数的,让我们看看我能找到什么:)
    • jQuery 无法计算数据库行数。但是 JavaScript 可以找出你在 DOM 中渲染了多少行(或者,最近一行的时间戳),然后发送一个 AJAX 请求来查看是否有新的行。 AJAX 操作可以通过计数或时间戳查询数据库。
    • 我绝对不相信时间戳,因为像我这样的一些网站在全球范围内都有浏览,他们得到了迟到的响应或不同的时区,而且它太混乱了 + 表中的另一列,但是 Javascript,它到底是如何计算的行很难相信 javascript 可以做到这一点,我知道一点点 javascript 但从未将它用于与 mysql 相关的任何事情......
    • JavaScript 无法计算数据库中的行数,正如我已经说过的。它可以计算 HTML 中的行数(例如,您渲染了多少 &lt;div&gt; 块)。
    • 您无需担心 JavaScript 中的浏览器时区:只需在 JavaScript 中某处呈现最年轻行的时间戳即可。您的第一个页面渲染可以渲染一个var youngestTimestamp = ...;,然后可以通过 AJAX 操作重置它。
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多