如何使用jQuery来不断运行PHP脚本并每秒获取响应,同时在鼠标按下时向同一脚本发送小数据?
我是否真的需要添加一些随机扩展名才能使这样一个简单的定时器工作?
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();
//你需要的所有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);
}
};
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
setInterval('ping()',1000); //this will ping 1000 milliseconds or 1 second
你不需要添加一些随机的扩展。原生的JavaScript函数setInterval和setTimeout可以在设定的时间间隔内执行操作。你可能想要做类似于以下的事情
function ajaxPing() {
...
}
setInterval("ajaxPing()", 1000);
$(element).mousedown(ajaxPing);