Javascript ajax错误时中断循环
我在循环内调用ajax,当文件不存在时,我需要中断循环。看起来是这样的:Javascript ajax错误时中断循环,javascript,loops,Javascript,Loops,我在循环内调用ajax,当文件不存在时,我需要中断循环。看起来是这样的: for(m=1; m<10; m++){ $.ajax({ type: "GET", url: "/config/" + m + ".xml", async : false,
for(m=1; m<10; m++){
$.ajax({
type: "GET",
url: "/config/" + m + ".xml",
async : false,
dataType: "xml",
success: function(xml) {
alert("File Exist");
},
error: function(xml) {
alert("File not exist");
break;
}
});
}
for(m=1;mvar m=1;
而(mvar)m=1;
虽然(m您应该考虑使用<代码>而Road)添加另一个条件(即使您在<代码>中也可以使用< < /Cult>循环条件>
var m = 1, fileExists = true;
while ( m<10 && fileExists ){
$.ajax({
type: "GET",
url: "/config/" + m + ".xml",
async : false,
dataType: "xml",
success: function(xml) {
alert("File Exist");
},
error: function(xml) {
alert("File not exist");
fileExists = false;
}
});
m++;
}
var m=1,fileExists=true;
虽然(m您应该考虑使用<代码>而Road)添加另一个条件(即使您在<代码>中也可以使用< < /Cult>循环条件>
var m = 1, fileExists = true;
while ( m<10 && fileExists ){
$.ajax({
type: "GET",
url: "/config/" + m + ".xml",
async : false,
dataType: "xml",
success: function(xml) {
alert("File Exist");
},
error: function(xml) {
alert("File not exist");
fileExists = false;
}
});
m++;
}
var m=1,fileExists=true;
而(m我最好用这样的东西:
(function loadConfig(n) {
$.ajax({
type: "GET",
url: "/config/" + m + ".xml",
dataType: "xml",
success: function (xml) {
alert("File Exist");
if (n < 9) loadConfig(n + 1);
},
error: function (xml) {
alert("File not exist");
}
});
})(0);
(函数loadConfig(n){
$.ajax({
键入:“获取”,
url:“/config/”+m+.xml”,
数据类型:“xml”,
成功:函数(xml){
警报(“文件存在”);
如果(n<9)loadConfig(n+1);
},
错误:函数(xml){
警报(“文件不存在”);
}
});
})(0);
这将产生一个非阻塞请求,这通常对用户体验更好
我最好用这样的方式:
(function loadConfig(n) {
$.ajax({
type: "GET",
url: "/config/" + m + ".xml",
dataType: "xml",
success: function (xml) {
alert("File Exist");
if (n < 9) loadConfig(n + 1);
},
error: function (xml) {
alert("File not exist");
}
});
})(0);
(函数loadConfig(n){
$.ajax({
键入:“获取”,
url:“/config/”+m+.xml”,
数据类型:“xml”,
成功:函数(xml){
警报(“文件存在”);
如果(n<9)loadConfig(n+1);
},
错误:函数(xml){
警报(“文件不存在”);
}
});
})(0);
这将产生一个非阻塞请求,这通常对用户体验更好
实际上,您的总体方法似乎很模糊。您确定要在for()循环中设置10个请求吗?
为什么不发送一个请求,让服务器处理其余的请求呢?实际上,您的总体方法似乎很模糊。您确定要在for()循环中设置10个请求吗
loop?为什么不发送一个请求,让服务器处理其余的请求?async=false,请求是同步的。现在在编辑(删除异步)后,我100%同意。这是更好的解决方案。async=false,请求是同步的。现在在编辑(删除异步)后,我100%同意。这是更好的解决方案。哦,是的,把m=10弄错是一个很好的主意……非常感谢。现在效果很好。设置m=10
不是解决方案,而是async:false
!async=false是问题本身的一个假设。我没有添加它,我只是注意到了。哦,是的,把m=10弄错了n error是一个很好的想法…非常感谢。现在它工作得很好。设置m=10
不是解决方案,而是async:false
!async=false是问题本身的假设之一。我没有添加它,我只是注意到了它。是的,对于while/for循环构造,您需要设置async:false
其他wise for循环不会在您期望的地方中断:)同样的问题,因为我犯了一个错误fileExist
更正为fileExists
true,而while/for循环构造需要设置async:false
否则for循环不会在您期望的地方中断:)同样的问题,因为我犯了一个错误fileExists
更正为fileExists