我一直在使用jquery / ajax请求。我已经成功获得了一个从数据库中检索数据的ajax请求,问题是,我每隔x秒就会不断地为window.setInterval()
提供刷新功能。
如何更改此设置以使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);
答案 0 :(得分:2)
这很大程度上取决于您的服务器如何动态更新其内容。那就是说,你要找的是websockets。 Websockets旨在取代长轮询范式。
编辑:由于您主要使用php作为服务器技术,请查看Ratchet。我听说过有关它的好消息http://socketo.me/这是一篇关于使用带有HTML的websockets的优秀文章 http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/
.NET在SignalR中有一个很棒的套接字库 http://signalr.net/
那里有无数的关于套接字的php文档 http://php.net/manual/en/book.sockets.php
答案 1 :(得分:0)
了解如何使用网络套接字 - 您可以随时向客户发送消息以查找新数据 - 这样您就不会发出任何不必要的请求。尝试检查pubnub -service是便宜的,可以处理你需要的一切。
答案 2 :(得分:0)
你需要一些服务器端来保持请求存活,直到有东西返回。这通常被称为“Comet”,“Long-polling”或“Push”。
原则是:
现在,实现服务器端将取决于您使用的语言/框架。
编辑:
使用PHP的一些例子:
答案 3 :(得分:0)
您可以设置xhr.multipart = true
并修改服务器代码。见Multipart Responses Example Code。另一种方法是使用上面提到的websockets