将 SetTimeout 与 Ajax 调用结合使用
我正在尝试使用 setTimeout 来检查表中是否存在数据:
如果数据存在,则不获取数据。如果数据不存在,则使用 load 获取数据,然后每 x 分钟执行相同的操作。
这是我到目前为止所拥有的。由于某种原因,setTimeout
在遇到 If 块时不起作用。
我什至不确定这是否是最好的方法。
var sTimeOut = setTimeout(function () {
$.ajax({
url: 'CheckIfDataExists/' +
new Date().getTime(),
success: function (response) {
if (response == 'True') {
$('.DataDiv')
.load('GetFreshData/' + new Date()
.getTime(), { "Id": $("#RowID").val() });
}
},
complete: function () {
clearTimeout(sTimeOut);
}
});
}, 10000);
任何帮助将不胜感激。
已更新...
setTimeout(function(){checkData()}, 5000);
function checkData(){
$.ajax({
url: 'CheckIfDataExists/' +
new Date().getTime(),
success: function (response) {
if (response == 'True') {
$('.DataDiv')
.load('GetFreshData/' + new Date()
.getTime(), { "Id": $("#RowID").val() });
} else {
$('.OutOfWindow').html('No Data Found');
setTimeout(function () { checkData() }, 5000);
}
},
complete: function () {
// clearTimeout(sTimeOut);
}
});
}
I am trying to use setTimeout to check if data exists in a table:
If the data exists don't fetch data. If the data des not exist fetch the data using load and then do the same thing every x minutes.
Here is what I have so far. For some reason, the setTimeout
does not work when it hits the If block.
I am not even sure if this is the best way to do this.
var sTimeOut = setTimeout(function () {
$.ajax({
url: 'CheckIfDataExists/' +
new Date().getTime(),
success: function (response) {
if (response == 'True') {
$('.DataDiv')
.load('GetFreshData/' + new Date()
.getTime(), { "Id": $("#RowID").val() });
}
},
complete: function () {
clearTimeout(sTimeOut);
}
});
}, 10000);
Any help will be greatly appreciated.
Updated ...
setTimeout(function(){checkData()}, 5000);
function checkData(){
$.ajax({
url: 'CheckIfDataExists/' +
new Date().getTime(),
success: function (response) {
if (response == 'True') {
$('.DataDiv')
.load('GetFreshData/' + new Date()
.getTime(), { "Id": $("#RowID").val() });
} else {
$('.OutOfWindow').html('No Data Found');
setTimeout(function () { checkData() }, 5000);
}
},
complete: function () {
// clearTimeout(sTimeOut);
}
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
像这样的东西应该可以工作,第一个片段已本地化,因此我可以测试运行它。我已经解释了代码,下面是您的代码应该是的内容,
就像您意识到的那样(从您帖子的更新中)
setTimeout
仅调用您的目标函数一次,因此要继续检查,如果检查失败,则需要再次调用它。在 JsFiddle 上查看: http://jsfiddle.net/jQxbK/
您的代码应如下所示:
Something like this should work, the first snippet is localized so I could test run it. I've explained the code and below it is what your code should be
Like you realized (from your update on your post)
setTimeout
only calls your target function once, so to keep checking you need to call it again if you do a check that fails.See it on JsFiddle : http://jsfiddle.net/jQxbK/
Your code should look like this :