我有5个ajax调用看起来像这样(不发布全部五个):
tabTest = {
BASE_URL : 'http://localhost/project/',
getPics : function(){
$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image1.js',
dataType : "json",
async: false,
success: function(data){
var pic = data.images.image[0].image_one;
$('#pic1 img').attr("src", pic);
}
});
$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image2.js',
dataType : "json",
async: false,
success: function(data){
var pic = data.images.image[0].image_two;
$('#pic2 img').attr("src", pic);
}
});
}
};
ajax调用可以正常工作,但它们都会立即触发;相反,我需要在每一个之间加一个延迟,这样它们就不会一次全部发射,而是按顺序点击一次(点击时,发生在不同的功能中),每次通话之间有5秒钟。
我尝试过使用' setTimeout'但它还没有奏效。我真的不确定如何继续这个。
答案 0 :(得分:2)
如果您将AJAX调用设置为自己的setTimeout()
,则没有理由不这样做:
setTimeout(function(){
$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image1.js',
dataType : "json",
async: false,
success: function(data){
var pic = data.images.image[0].image_one;
$('#pic1 img').attr("src", pic);
}
});
}, 5000);
然后为每个呼叫增加5000的持续时间。所以第二个看起来像:
setTimeout(function(){
$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image2.js',
dataType : "json",
async: false,
success: function(data){
var pic = data.images.image[0].image_one;
$('#pic2 img').attr("src", pic);
}
});
}, 10000);
您也可以将函数放在上一个请求的回调中,尽管请求失败意味着不会调用所有后续的AJAX请求。
答案 1 :(得分:1)
尝试在之前的成功回调函数上添加下一个ajax调用。
$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image1.js',
dataType : "json",
async: false,
success: function(data){
var pic = data.images.image[0].image_one;
$('#pic1 img').attr("src", pic);
$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image2.js',
dataType : "json",
async: false,
success: function(data){
var pic = data.images.image[0].image_two;
$('#pic2 img').attr("src", pic);
}
});
}
});
OR
$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image1.js',
dataType : "json",
async: false,
success: function(data){
var pic = data.images.image[0].image_one;
$('#pic1 img').attr("src", pic);
call2();
}
});
function call2(){
$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image2.js',
dataType : "json",
async: false,
success: function(data){
var pic = data.images.image[0].image_two;
$('#pic2 img').attr("src", pic);
}
});
}
所以现在当第一个ajax完成时,下一个呼叫将会激活。
答案 2 :(得分:0)
您可以使用setInterval()
。当使用setInterval()
时,它可以记录你提到功能的时间......你看看秒......
setInterval("functionname()",50000);