Javascript 如果发出相同的请求,则跳过AJAX函数
我的AJAX请求包含在JavaScript函数中。使用setInterval函数,AJAX函数每5000ms执行一次 我想知道是否有办法检查前一个AJAX调用是否仍在处理中,这样我就不会有多个相同的AJAX请求 这是我的密码:Javascript 如果发出相同的请求,则跳过AJAX函数,javascript,jquery,ajax,setinterval,Javascript,Jquery,Ajax,Setinterval,我的AJAX请求包含在JavaScript函数中。使用setInterval函数,AJAX函数每5000ms执行一次 我想知道是否有办法检查前一个AJAX调用是否仍在处理中,这样我就不会有多个相同的AJAX请求 这是我的密码: function getData(fields){ $.ajax({ url: 'index.php', type: 'post', data: { fields: fields }, dataTyp
function getData(fields){
$.ajax({
url: 'index.php',
type: 'post',
data: { fields: fields },
dataType: 'json',
success: function(json) {
if (json) {
// We have a response
}
});
}
window.setInterval(function(){
getPosts(fields);
}, 2000);
提前谢谢
彼得
创建一个我们可以在函数范围之外访问的变量
function getData(fields) {
req = $.ajax({...});
将变量分配给ajax请求
setInterval(function() {
if (req.state() == 'resolved' && req.state() !== 'pending') {
getPosts(fields);
}
});
检测.state()
创建一个我们可以在函数范围之外访问的变量
function getData(fields) {
req = $.ajax({...});
将变量分配给ajax请求
setInterval(function() {
if (req.state() == 'resolved' && req.state() !== 'pending') {
getPosts(fields);
}
});
检测.state()
var getDataRequest = null;
function getData(fields) {
if (getDataRequest !== null) {
return;
}
getDataRequest = $.ajax({
url: 'index.php',
type: 'post',
data: { fields: fields },
dataType: 'json',
success: function(json) {
if (json) {
// We have a response
}
getDataRequest = null;
}
});
}
window.setInterval(function() {
getPosts(fields);
}, 2000);
试试这个:
var getDataRequest = null;
function getData(fields) {
if (getDataRequest !== null) {
return;
}
getDataRequest = $.ajax({
url: 'index.php',
type: 'post',
data: { fields: fields },
dataType: 'json',
success: function(json) {
if (json) {
// We have a response
}
getDataRequest = null;
}
});
}
window.setInterval(function() {
getPosts(fields);
}, 2000);
您可能需要检查!==改为“挂起”
,以防失败!它起作用了。唯一的问题是req.state()未定义,因为函数未执行,因此req.state()将未定义。我刚刚添加了onload函数来解决这个问题!非常感谢:)@Ian我还没有遇到这个问题,但我添加了它是为了让您安心。您可能需要检查!==改为“挂起”
,以防失败!它起作用了。唯一的问题是req.state()未定义,因为函数未执行,因此req.state()将未定义。我刚刚添加了onload函数来解决这个问题!非常感谢:)@Ian我还没有遇到过这个问题,但我添加它是为了安心。