我的setTimeout函数不想工作。我没有得到任何警报,所以我假设我做了一些非常愚蠢的事情。
var timeout = 1000;
for(k=0;k<pages.length;k++)
{
randomnumber=Math.floor(Math.random()*pages[k].length);
setTimeout(function() {
$.ajax({
type: 'GET',
url: pages[k][randomnumber],
success: function(data) {
alert(data);
if(data.indexOf('VIDEO_LENGTH') > 0)
{
timeouttext = data.substr(data.indexOf('VIDEO_LENGTH')+12);
timeouttext = timeouttext.substr(timeouttext.indexOf('.'));
timeout = parseInt(timeouttext);
alert(timeout);
}
else
timeout = 1000;
$('#loader').hide('fast','fade');
$('#information').html(data);
$('#information').show('fast','fade');
}
})
},timeout);
alert("PAGE " + k + " RandomNumber " + randomnumber + " : " + pages[k][randomnumber]);
if(k==3) {
k = 0;
}
}
任何人都可以帮助我。
答案 0 :(得分:2)
编辑:确定关注错误:
调用页面url时的var k与预期不符。所以试试:
{
randomnumber=Math.floor(Math.random()*pages[k].length);
var selectedIndex = k; // store current k
setTimeout(function() {
$.ajax({
type: 'GET',
url: pages[selectedIndex][randomnumber], // use stored k
...
答案 1 :(得分:1)
使用FireBug或CHrome的开发人员工具调试代码时,您是否看到了Ajax请求?
在我看来,对于每个请求,您都没有进入“成功”事件。由于您的Ajax请求中没有“错误”事件,因此您永远不会看到任何反馈。
答案 2 :(得分:1)
你的setTimeout是正确的。要进一步检查错误:
检查控制台是否正在发送您的请求。
添加记录请求状态的error: function(){}
或complete:function(){}
块,以查看服务器端是否破坏了您的代码。
编辑:(我建议你不要使用速记if
,这很容易出错。
答案 3 :(得分:0)
尝试此操作(更新)fiddle here。
var funfacts= ['URL1','URL2','URL3'];
var multimedia= ['URL4','URL5'];
var employees = ['URL6','URL7','URL8','URL9','URL10'];
var information = ['URL11','URL12','URL13'];
var pages = [funfacts, multimedia, employees, information];
var timeout=1000;
var t=0;
for(i=0;i<pages.length;i++)
{
(function(value){
for(j=0;j<pages[value].length;j++)
{
t++;
(function(iv, ij){
var tmo = timeout*t;
setTimeout(function(){
callAjax(iv, ij);
}, tmo);
})(value, j);
}
})(i);
}
function callAjax(i, j)
{
$.ajax({
type: 'GET',
url: pages[i][j],
success: function(data) {
if(data.indexOf('VIDEO_LENGTH') > 0) // indexOf should be checked if(var.indexOf('sometext')!=-1)
{
// your code
}
else
{
// your code
}
}
});
}
如果其他一切都很好,那么它应该有用。