如何使用jQuery不断运行PHP脚本并每秒获取响应,并将鼠标下载的一小部分数据发送到同一个脚本?
我真的需要添加一些随机扩展才能让这么简单的计时器工作吗?
答案 0 :(得分:24)
迭代是人类,以递归神圣 -L. Peter Deutsch
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();
答案 1 :(得分:1)
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
答案 2 :(得分:1)
//您需要的所有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);
}
};
答案 3 :(得分:0)
您不必添加一些随机扩展名。有一些本机javascript函数setInterval and setTimeout用于按设定的时间间隔执行操作。您可能想要做类似
的事情function ajaxPing() {
...
}
setInterval("ajaxPing()", 1000);
$(element).mousedown(ajaxPing);
另一方面,如果你真的想要每秒ping ,那么将数据存储在mousedown
的变量中并在下次ping时提交它可能就足够了(这将在不到一秒的时间内发生)。
答案 4 :(得分:0)
您可以将用于ping服务器的代码放在函数中,然后执行以下操作:
setInterval('ping()',1000); //this will ping 1000 milliseconds or 1 second