Php 使用Ajax从数据库动态获取数据,无需刷新间隔
我一直在处理jquery/ajax请求。我已经成功地获得了一个ajax请求,它将从数据库中检索数据,问题是,我一直在为Php 使用Ajax从数据库动态获取数据,无需刷新间隔,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我一直在处理jquery/ajax请求。我已经成功地获得了一个ajax请求,它将从数据库中检索数据,问题是,我一直在为window.setInterval()提供服务,以每x秒刷新一次此函数 我将如何更改它以保持ajax请求的活动性,这样它就可以更新html内容,而不必向ajax脚本提供多个请求 我的代码如下: window.setInterval(function() { $(function () { $.ajax({
window.setInterval()
提供服务,以每x秒刷新一次此函数
我将如何更改它以保持ajax请求的活动性,这样它就可以更新html内容,而不必向ajax脚本提供多个请求
我的代码如下:
window.setInterval(function()
{
$(function ()
{
$.ajax({
url: 'Ajax.php'+SearchTerm, dataType: 'json', success: function(rows)
{
$('#NumberOfVotes').empty();
for (var i in rows)
{
var row = rows[i];
var QuestionID = row[0];
var Votes = row[1];
$('#NumberOfVotes')
.append(Votes);
}
}
});
});
}, 500);
这在很大程度上取决于服务器如何动态更新其内容。也就是说,您正在寻找的是WebSocket。WebSocket旨在取代长轮询范式 编辑:由于您的服务器技术主要使用php,请看Ratchet。我听说过这方面的好消息 这是一篇关于将WebSocket与HTML结合使用的优秀文章 NET在Signal中有一个很棒的套接字库 有大量关于套接字的php文档
研究如何使用web套接字—您可以在客户需要查找新数据时随时向他们发送消息—这样您就不会提出任何不必要的请求。尝试查看pubnub-这项服务很便宜,可以处理您需要的一切。您需要一种服务器端的服务,在请求返回之前保持请求的活动状态。这通常被称为“彗星”、“长轮询”或“推送” 原则是:
编辑: 使用PHP的一些示例:
您可以设置
xhr.multipart=true
并修改服务器代码。看见另一种方法是使用前面提到的WebSocketsetInterval是正确的方法。如果你想要一个异步服务器,你应该试试。SignalR的一个好处是,对于那些缺乏web套接字本机支持的旧浏览器,它可以采用长轮询和类似的技术。@ChristofReliasson是的,还有其他一些东西。SignalR库是如此具有革命性,以至于Scott Hansleman及其公司现在将其作为.NET标准web库的一部分。它非常强大,我应该指定我主要使用PHP@user2146021别担心。我已经用我经常听到的推荐的优秀PHP websocket库更新了我的答案,并重新标记了您的问题以使其更清晰。websocket的主要问题是,一些浏览器仍然不支持它们。我编辑了我的答案,添加了PHP Comet实现的示例。希望这有帮助:)