基本上只是想查看服务器上是否存在特定的txt文件,如果存在,请进行进一步处理;但是,我不认为我的递归是正确的,所以有人可以提供一些指示 - 这就是我所拥有的:
function fileExists(filename) {
$.ajax({
type: 'HEAD',
url: 'http://www.example.com/system/'+filename+'.txt',
success: function() {
// Further processing if file exists
},
error: function() {
// File does not exists, run through function again-
return arguments.callee(filename);
}
});
}
这是非常基本的,事先有一些处理实际创建文件;但问题是它是FTP到我们的域,这意味着时间可能会有几秒钟的变化,所以基本上我只是想让它重新检查,直到它看到该文件存在。我稍后会修改它来控制堆栈,可能会设置超时半秒或者其他东西,但是我用javascript来说不是很好,所以我需要一些指针来使这个递归。非常感谢任何帮助。
答案 0 :(得分:2)
问题是当您尝试通过fileExists
再次致电arguments.callee(fileName)
时,error
方法的范围并非您认为的那样。
只需致电fileExists
即可。
另一个你将拥有的是,如果你的服务器很快,你将会发出大量的请求。您可能希望在请求之间等待一段时间。因此,请error
包含
setTimeout(function(){
console.log('trying again....'); // this won't work in IE, I *think*
fileExists(filename);
}, 1000); // try again in a second
最后,您应该意识到,如果服务器返回500,则仅调用error
回调.500代码通常表示您的服务器上存在错误。如果文件不存在,您应该返回json以指示该文件不存在,并在success
回调中处理该情况。
答案 1 :(得分:1)
error: function() {
fileExists(filename);
}