当您回答问题并且有人提交另一个答案时,*** 上显示的弹出警报是如何创建的?
Posted
技术标签:
【中文标题】当您回答问题并且有人提交另一个答案时,*** 上显示的弹出警报是如何创建的?【英文标题】:How is the Pop up alert which is displayed on *** when you are answering a question and someone submits another answer created? 【发布时间】:2011-05-02 11:36:27 【问题描述】:好的,所以您知道什么时候您正在回答一个问题并且正在输入它,而其他人发布了您的问题的答案,并且您会看到一个小弹出窗口,显示该问题有一个新的答案?我的问题是你是怎么做到的?我想我已经掌握了基本概念...回答了一个问题,将其添加到了数据库中。您所在的页面会不断检查数据库中的新答案,如果有新答案,则会显示一个弹出窗口。 (我不确定它是否是这样做的,但只是和想法)无论如何,我正在尝试使用 php 和 jQuery / Ajax / 其他东西创建一个具有与该弹出窗口类似的功能的应用程序?我有一个页面将在屏幕上显示来自数据库的信息。我需要的是:弄清楚如何让该弹出窗口仅在数据库中添加新内容时才显示。 感谢您的帮助!
我还应该添加...如果有人有任何教程或代码 sn-ps 来分享关于 ajax/jquery 与 sql 的集成,那会很棒。我在 PHP 方面相当不错,但对 ajax 和 jquery 完全陌生:-/
【问题讨论】:
@KevinDTimm 这是一个关于它背后的编程的问题。这是一个完全可以接受的 SO 问题。 KevinDTimm :提问者使用 *** 作为示例来提出更一般的问题。问题属于这里。 我要么在第一次阅读时错过了它,要么是后来添加的——不管怎样,现在被删除了。 【参考方案1】:当您第一次加载问题页面时,还要阅读答案的数量。
现在每隔几秒/分钟使用 ajax 请求轮询服务器,返回答案的数量..
如果答案数量大于您首次加载问题时的数量,则显示已发布其他答案的消息。
【讨论】:
关于如何使用 ajax 轮询服务器有什么建议吗? 虽然我没有检查过SO源,但这种方法似乎是最合乎逻辑的路径。 @phil,使用setTimeout
或setInterval
来控制轮询频率,并使用jQuery ajax 功能。您的ajax 调用需要服务器上的一个页面来接收id问题,检查数据库以获取该问题的答案并返回其计数..
@Gaby,只是为了确保我理解。我制作了一个 PHP 页面来检查数据库并返回最后一个 ID。然后 jQuery 调用这个 PHP 页面,因此 jQuery 现在将拥有最后一个 ID,如果该 ID 是 > 页面上的 ID,我将调用一个弹出函数...对吗?
@phil ,ID是问题的ID。您还需要该问题的答案数量,这就是您使用初始答案数量检查的内容..这取决于您的数据库的设置方式..(查看您的 sql 系统的 count
函数)【参考方案2】:
This is a tutorial 了解如何进行实际通知。
至于查询,它是一个相当简单的 AJAX 定期调用数据库以检查新结果。如果是count > 0
,则触发通知进程。
refresh method on this tutorial 可以很容易地重新用于此类通知。
【讨论】:
【参考方案3】:在 javascript 中创建一个计时器并调用一个 AJAX 端点,该端点为您提供要显示的消息或提供 html 以放置在每个页面顶部的占位符中。如果您得到返回的数据,则使用 jQuery 将其插入到页面 DOM 中。
【讨论】:
【参考方案4】:您已经掌握了基本概念 - 我不确定,但这似乎是执行此操作的明显方法。
至于具体问题 - ajax 调用的结果应表明是否已添加答案。仅当结果表明已添加结果时才显示弹出窗口。
【讨论】:
【参考方案5】:您几乎可以使用 jQuery 来完成所有这些工作。
创建一个脚本,该脚本将返回所需的 JSON 数据,可能只是当前文章的 ID,然后是答案数。在您的页面中,创建一个计时器,每隔约 30 秒对脚本执行一次 ajax 调用。在您的成功回调函数中,将返回的答案数量与页面上当前的答案数量进行比较。如果答案更大,则使用 show() 或 fadeIn() 函数执行通知。 (您可以在页面加载时加载消息 HTML,也可以使用 ajax 调用为消息附加/前置所有 html。
这是一个模糊的答案,但这个问题实际上非常广泛,所以你可以用一百万种不同的方式来做到这一点。如果需要帮助,可以私信我。
【讨论】:
以上是关于当您回答问题并且有人提交另一个答案时,*** 上显示的弹出警报是如何创建的?的主要内容,如果未能解决你的问题,请参考以下文章