Use*_*343 10 javascript ajax jquery settimeout liferay
function tryToDownload(url)
{
oIFrm = document.getElementById('myIFrm');
oIFrm.src = url;
// alert(url);
// url=escape(url);
setTimeout(deletefile(url), 25000);
}
Run Code Online (Sandbox Code Playgroud)
以下是deletfile函数
function deletefile(url){
$.ajax({
type:'post',
url: "<%= addToDoDeleteDownloadFile %>",
data:{filename:url},
type : "GET",
timeout : 20000,
dataType : "text",
success : function(data) {
alert("success");
}
});
}
Run Code Online (Sandbox Code Playgroud)
上面是我的jQuery和我在25秒后调用一个函数,但有些如何不延迟deletefile(url)函数并执行刚刚执行.所以应该是什么问题?
Sir*_*rko 19
在这一行中,您调用函数并将结果传递给setTimeout().
setTimeout(deletefile(url), 25000);
Run Code Online (Sandbox Code Playgroud)
如果要延迟执行,请添加包装函数:
setTimeout( function(){ deletefile(url); }, 25000);
Run Code Online (Sandbox Code Playgroud)
编辑
@Petah提出的另一种选择:
setTimeout(deletefile, 25000, url);
Run Code Online (Sandbox Code Playgroud)
setTimeout()在延迟之后传递给的所有参数将在执行时传递给函数.因此,在这种情况下,通过参考 的功能,延迟,然后将参数的顺序的功能!
请注意,根据MDN,这种传递参数的方式在IE9之前不会在IE中工作.