2017-03-24 37 views
0

我試圖一個接一個地執行ajax post請求,只有當結果是「完成」時才停止。但我不明白爲什麼它不循環...我得到一個JSON的答案,但我無法做任何事情與成功的反應。 我迄今爲止代碼:與Jquery一個接一個地執行Ajax查詢

var index = 0; 
function crawler(textarea) { 
     index = 0; 
     if(url != ''){ 
      if(/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url)){ 
       execute_queue(index); 
      } 
     } 
    }; 

function execute_queue(index) 
    {  
     url  = strip_tags($('#input-website').val().trim()); 
     folders = strip_tags($('#excluded-folders').val().trim()); 
     $.ajax({  
      url: 'xxx', 
      cache: false, 
      type : 'POST', 
      async: false, 
      data: {url:url, folders:folders, current:index}, 
      success: function(response) 
      { 
       index++;   
       execute_queue(index); 
      } 

     }); 
}; 

在此先感謝您的幫助。

+0

請刪除'異步:FALSE'。這是非常糟糕的做法。控制檯中有任何錯誤? –

+0

您是否檢查過「響應」返回的內容? –

+0

創建一個請求數組,創建一個函數來執行AJAX請求,並在返回結果時運行下一個數組項請求,執行此操作直至獲得所需內容。 –

回答

0

您應該檢查是否請求失敗,這是直接從JQuery的manaual:

var jqxhr = $.ajax("example.php") 
    .done(function() { 
    alert("success"); 
    }) 
    .fail(function() { 
    alert("error"); 
    }) 
    .always(function() { 
    alert("complete"); 
    }); 

更多信息found here,成功不會URL是否有錯誤響應調用。

UPDATE: 我覺得你的代碼應該是這個樣子:

var index = 0; 
function crawler(textarea) { 
     index = 0; 
     if(url != ''){ 
      if(/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url)){ 
       execute_queue(index); 
      } 
     } 
    }; 

function execute_queue(index) 
    {  
     url  = strip_tags($('#input-website').val().trim()); 
     folders = strip_tags($('#excluded-folders').val().trim()); 
     $.ajax({  
      url: 'xxx', 
      cache: false, 
      type : 'POST', 
      data: {url:url, folders:folders, current:index}, 
      success: function(response) 
      { 
       index++;   
       execute_queue(index); 
      }, 
      error: function(jqXHR, textStatus, errorThrown) { 
       alert("Error: " + textStatus + " : " + errorThrown); 
      } 
     }); 
}; 
+0

我得到一個JSON響應,就是這樣。添加了您的答案,並提醒「錯誤」和「完整」... –