【问题标题】:JQuery Polling using MySQL and PHP. How?使用 MySQL 和 PHP 的 JQuery 轮询。如何?
【发布时间】:2012-05-01 21:36:15
【问题描述】:

我在网站上找到了各种方法来轮询 MySQL,有好有坏,而且大多是 2 岁。

我想看一个如何正确轮询服务器的示例。

我有一个 MySQL 表,其中插入了 cmets。我想在 JQuery 中看到一个关于如何轮询此服务器并附加到 DIV 的示例,只有自上次轮询检查以来插入表中的新 cmets,而不是每 5 秒显示最后 10 个条目。

一个非 setInterval 的例子是理想的,因为我读过 setInterval 在发出另一个请求之前不关心请求是否成功。

【问题讨论】:

    标签: php jquery mysql


    【解决方案1】:

    您必须向服务器端脚本发送 AJAX 请求,该脚本将检查数据库中的新 cmets 并将其返回 JSON 编码。

    要仅获取最新的 cmets,请在客户端代码上维护最后一次获取评论的时间戳。下次您请求 cmets 时,请传递此时间戳。您的服务器端脚本只会返回时间戳大于传入参数的 cmets。

    您可以在成功处理程序中重新提交 AJAX 请求,而不是使用 setInterval

    function ajaxRequest(timestamp) {
        $.ajax({
            url : 'url_to_post?timestamp=' + timestamp,
            success : function(response){
                //handle the new comments here
                //call this function again
                //sleep for 3 seconds first
                setTimeout(function(){
                    timestamp += 3000;
                    ajaxRequest(timestamp);
                },3000);
    
            }
    
        });
    }
    

    【讨论】:

    • 嗯...有趣。你能告诉我更多关于在成功处理程序中重新提交 AJAX 请求的信息吗?听起来像是某种循环。或者也许发布一个样本? =)
    • @Vini:我发布了一个代码示例。是的,它是一个递归循环。
    • 正确。至于确保通过PHP从MySQL提交、存储和检索的时间戳格式相同,以便进行比较,希望所有3种语言都可以轻松相互翻译。
    • 或者,您可以在发送响应之前让服务器延迟最多 50 秒,然后让成功处理程序立即发送另一个 AJAX 请求。这样一来,您可以让服务器在有需要报告的情况下更快地响应,从而以更少的请求为您提供更快速的性能。
    • 是的,就是这样。如果此答案解决了您的问题,请点击复选标记接受。
    猜你喜欢
    • 1970-01-01
    • 2012-10-06
    • 2011-10-20
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多