AJAX在连续循环中调用?

时间:2010-04-23 07:00:50

标签: mysql ajax loops

我想创建某种AJAX脚本,或者如果有任何新消息到达,将继续调用MySQL数据库。当数据库中有新消息时,AJAX脚本应该调用一种警告框或消息框。

我不是一个AJAX专家(但无论如何)并且已经用Google搜索来找到解决方案,但我很难弄清楚从哪里开始。我想这与AJAX聊天用于查看是否已发送任何新聊天消息的方法相同。

我还尝试在连续无限循环中搜索AJAX(httpxmlrequest)调用,但还没有得到解决方案。

我希望有人可以帮我解决这样一个AJAX脚本,或者可能会让我朝着正确的方向努力。

由于 诚挚 Mestika

4 个答案:

答案 0 :(得分:2)

步骤1 - 您需要一个可以调用的服务器端页面,检查是否有新内容。

第2步 - 您可以从此处调整顺序AJAX请求脚本(它使用jQuery来简化AJAX请求):

http://www.stevefenton.co.uk/Content/Blog/Date/201004/Blog/AJAX-and-Race-Conditions/

目前,此脚本用于排队顺序AJAX请求列表,但您可以通过更改它来连续检查...

var InfiniteAjaxRequest = function (uri) {
    $.ajax({
        url: uri,
        success: function(data) {
            // do something with "data"
            if (data.length > 0) {
                alert(data);// Do something sensible with it!
            }
            InfiniteAjaxRequest (uri);
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError);
        }
    });
};

InfiniteAjaxRequest ("CheckForUpdate.php");

使用此脚本有什么好处?

好吧,它不会检查每个“x”秒,而只会在收到上一个请求后检查,因此它会链接请求。您可以添加延迟来限制此常量请求,我强烈建议您这样做 - 否则您将以过多的流量访问您的网站。你应该在响应之后添加延迟,但是在你回调“InfiniteAjaxRequest”之前。

答案 1 :(得分:2)

这是你的轻推:

  • 获取一个可用的JavaScript框架(jQuery似乎是最常见的,但还有其他框架)
  • 通过它提供的AJAX方法的文档,选择适合您的任务的方法
  • 为您的网站构建一个请求,该请求获取信息并对响应做出反应(显示消息框或更新页面的某些部分),将其包装在函数中
  • 确保通过实施错误处理程序
  • 不会忽视请求错误
  • 查看setInterval()以调用您刚刚重复制作的功能
  • 最后一步:确保在出现错误情况时停止间隔(或者为用户提供开/关按钮),这样服务器就不会受到不必要的打击

答案 2 :(得分:0)

有一种名为Comet的技术,您的客户端脚本会在其中实例化一个长时间保持打开状态的HTTP请求。然后,服务器可以在响应发生时将数据推送到响应中。这是一种提供push notification的技术。

维基百科链接提供了有关实际实施的更多信息。

答案 3 :(得分:0)

您可以使用推送技术(COMET),而不是使用AJAX调用轮询服务器。 这样,只要服务器完成工作,您就可以将结果推送到客户端。 有许多框架可用,如:

  1. JQuery plugin
  2. Cometd
  3. Atmosphere(如果你在java上)