我想做以下申请:
1)我想使用ajax检索消息。 (Jquery的)
2)当我阅读消息时 - 我想等待10秒钟来检索下一条消息
3)然后再等10秒钟检索下一条消息
4)数据库中的所有行。
在这种情况下如何使用计时器?
如何开始然后停止计时器?
function loadMessage(user_id)
{
$.post('ActionScripts/Message.php',{
user_id: user_id
}, function(data) {
//data
},"json");
}
答案 0 :(得分:4)
function loadMessage(user_id)
{
$.post('ActionScripts/Message.php',{
user_id: user_id
}, function(data) {
//data
setTimeout(function(){loadMessage(user_id); }, 10000);
},"json");
}
答案 1 :(得分:1)
我更喜欢在前一个完成之后调用下一个ajax请求(不如10000间隔那么重要),但即使第一个失败,你也必须调用下一个...
function loadMessage(user_id) {
$.ajax({
type: "POST",
url: 'ActionScripts/Message.php',
data: { user_id: user_id }
dataType: 'json',
async: true,
cache: false,
timeout:30000,
success: function(data){
// do what you need with the returned data...
setTimeout(function(){loadMessage(user_id); },10000);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
//do what you want with the error
setTimeout(function(){loadMessage(user_id); },10000);
}
});
}
答案 2 :(得分:0)
以下实现调用服务器并每10秒执行一次:
function loadmessage (user_id) {
$.post('ActionScripts/Message.php', {
user_id: user_id
}, function (data) {
//data
}, "json");
}
var interval = setInterval(function() { loadmessage(5345) }, 10000);
要停止计时器,请使用clearInterval
:
clearInterval(interval);
重新启动计时器 - initialize
interval
变量:
var interval = setInterval(function() { loadmessage(5345) }, 10000);