2017-03-24 5 views
0

私はajax投稿要求を1つずつ実行しようとしており、その結果が "done"のようなものである場合にのみ停止します。しかし、私はそれがループしていない理由を理解できません...私はjsonの答えを得るが、私は成功の応答で何もすることはできません。 これまでの私のコード:あなたの助けを事前にAjaxクエリを1つ1つJqueryで実行する

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

を '非同期を削除してください。それは本当に悪い習慣です。コンソールにエラーがありますか? –

+0

「返信」が返すものを確認しましたか? –

+0

リクエストの配列を作成し、AJAXリクエストを実行する関数を作成し、結果が返されたら、次の配列アイテムリクエストを実行し、必要なものが得られるまでこれを行います。 –

答えて

0

要求が失敗した場合は、チェックする必要がありますが、これは直はJQuery manaualからである:URLがエラーで応答した場合

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

詳細情報found hereは、成功は呼び出されません。

UPDATE: 私はあなたのコードは次のようなものになるはずだと思う:false`を:

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レスポンス、それが問題です。あなたの答えを追加し、それは "エラー"と "完了"を警告します... –

関連する問題