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.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); } }; 

Вы можете поместить код для pinging сервера в функцию, а затем сделать что-то вроде этого:

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

Вам не нужно добавлять какое-либо случайное расширение. Существуют встроенные функции javascript setInterval и setTimeout для выполнения заданий с заданными интервалами. Вероятно, вы захотите сделать что-то вроде

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

С другой стороны, если вы действительно хотите делать pinging каждую секунду , вероятно, достаточно будет просто хранить ваши данные в переменных на mousedown и отправлять их на следующий ping (это произойдет менее чем за секунду).