jQuery不断ping Ajax响应

我如何使用jQuery不断运行PHP脚本并每秒获取响应,并将鼠标上的少量数据发送到同一个脚本?

我真的需要添加一些随机扩展才能让这么简单的计时器工作吗?

迭代是人,是递归神圣。
-L。 彼得德意志

var req = function () { $.ajax({ url : 'http://example.com/yourscript.php', complete : function () { req(); } }); }; req(); 

如果不明显,上述内容将在前一个请求完成后立即生成新请求。 您还可以在请求之间设置1秒的延迟,如下所示:

 var req = function () { $.ajax({ url : 'http://example.com/yourscript.php', complete : function () { setTimeout(function () { req(); }, 1000); } }); }; req(); 
 function doAjax(data){ $.ajax({ type: "POST", data: data, url: 'http://example.com/yourscript.php', }); } // Set interval setInterval('doAjax()',1000); // Set event handler $(document).mousedown(function(){ doAjax({key: 'value'}); }); 

如果您不想捕获整个页面上的点击,可以用实际元素替换$(document)。

如果你正在寻找回调等,你可以使用ajax函数做更多的事情: http : //docs.jquery.com/Ajax/jQuery.ajax

//你需要的所有ping:

 ping.pushCallback(function() { YourCallback(); }); $.data(document.body, 'data_ping', ping); 

// ———————————————— —— //脚本

 $.ping = function(url, options) { this.url = url; this.options = $.extend({ delay: 2000, dataType: 'json', timeout: 10000, data: {}, callbacks: [] }, options); this.queue(); }; $.ping.prototype = { queue: function() { var self = this; setTimeout(function() { self.send(); }, self.options.delay); }, send: function() { var self = this; $.ajax(self.url, { success: function(data) { for (var i in self.options.callbacks) { self.options.callbacks[i](data); } }, complete: function() { self.queue(); }, dataType: self.options.dataType, data: self.options.data, type: "GET", cache: false, timeout: self.options.timeout }); }, setData: function(key, value) { this.options.data[key] = value; }, pushCallback: function(callback) { this.options.callbacks.push(callback); } }; 

您可以将用于ping服务器的代码放在函数中,然后执行以下操作:

 setInterval('ping()',1000); //this will ping 1000 milliseconds or 1 second 

您不必添加一些随机扩展名。 有本机javascript函数setInterval和setTimeout用于按设定的时间间隔执行操作。 你可能想要做类似的事情

 function ajaxPing() { ... } setInterval("ajaxPing()", 1000); $(element).mousedown(ajaxPing); 

另一方面,如果你真的想每秒进行一次 ping操作,那么将数据存储在mousedown中的变量中并在下一次ping时提交它可能就足够了(这将在不到一秒的时间内完成)。