簡體   English   中英

Ajax錯誤時中斷循環

[英]Break loop when ajax error

我ajax調用循環內,當文件不存在時,我需要中斷循環。 看起來像這樣:

                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;
                        }
                    });
                }   

當我從錯誤功能中刪除中斷時,它將警告“文件不存在”,但是當我離開該中斷時,它將完全中斷整個腳本。 我只需要在文件不存在時打破循環。

我最好使用這樣的東西:

(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);

這將發出非阻塞請求,通常對UX更好。

演示版

    var m=1;
    while(m<10){    

       $.ajax({
           type: "GET",
           url: "/config/" + m + ".xml",
           async : false,
           dataType: "xml",
           success: function(xml) {

               alert("File Exist");   
               m++;                         
           },
           error: function(xml) {
               alert("File not exist");
               m=10;
           }
      });
 }   

您應該考慮使用while循環添加另一個條件(即使您也可以在for循環條件中這樣做)

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++;
}

或使用for循環

var fileExists = true;
for(m=1; m<10 && fileExists; m++){
    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM