2013-02-24 51 views
0

我已經閱讀了許多主題,針對我的問題提出了一些問題,並且我找到了答案。 但是,如果我的功能沒問題,我想問問。在嘗試獲取下一個請求之前同步jquery請求等待完成

我必須在onclick事件中處理帶有不同id的窗體。

function setBoocking() { 
    if ($('.ajaxre').length) { 
     var key = 0; 
     //var ajaxboocking = []; 
     var sotredPDF = new Array(); 
     $('.ajaxre').each(function() { 
      var form = $(this); 
      var data = form.serialize(); 
      $.ajax({ 
       async: false, 
       timeout: 4000, 
       url: "ajaxloader.php", 
       type: "POST", 
       data: data, 
       dataType: "json", 
       success: function ($data) { 
        if ($data != null) { 
         if ($data.status == 1) { 
          alert("all fine"): 
         } 
        } 
       }, 
       error: function ($databack) { 
        ajaxfehler('normal'); 
        loading('end'); 
       } 
      }); 
     }); 
    } 
} 

HTML

<div class="ajaxre"> 
    <form class="ajaxre" id="1"> 
     <input type="hidden" name="test" value="test1" /> 
    </form> 
</div> 
<div class="ajaxre"> 
    <form class="ajaxre" id="2"> 
     <input type="hidden" name="test" value="test2" /> 
    </form> 
</div> 
<div class="ajaxre"> 
    <form class="ajaxre" id="3"> 
     <input type="hidden" name="test" value="test3" /> 
    </form> 
</div> 
<br /> 
<br /><a onclick="setBoocking();">test</a> 

所以你看,我在我的AJAX請求的異步:假的。這樣可行。但我可以讓我的功能使用異步請求「我將設置timout函數」不工作與asnc,並等待一個任務完成或得到錯誤,然後嘗試下一個請求?

非常感謝

+0

HTML部分: 「



testen」 – user2105102 2013-02-24 18:37:00

+1

您可以編輯您的帖子 – jcubic 2013-02-24 18:40:48

回答

0

你可以嘗試這樣的事情,延遲函數調用,一秒,如果要是要求發生。

var pause = false; 
function request(data) { 
    if (!pause) { 
     pause = true; 
     $.ajax({ 
      url: "ajaxloader.php", 
      type: "POST", 
      data: data, 
      dataType: "json", 
      success: function ($data) { 
       if ($data != null) { 
        if ($data.status == 1) { 
         alert("all fine"); 
         pause = false; 
        } 
       } 
      }, 
      error: function ($databack) { 
       ajaxfehler('normal'); 
       loading('end'); 
       pause = false; 
      } 
     }); 
    } else { 
     setTimeout(function() { 
      request(data); 
     }, 1000); 
    } 
} 


function setBoocking() { 
    if ($('.ajaxre').length) { 
     var key = 0; 
     //var ajaxboocking = []; 
     var sotredPDF = new Array(); 
     var in_request = false; 
     $('.ajaxre').each(function() { 
      request($(this).serialize()); 
     }); 
    } 
} 
+0

@jcubuc感謝。這有效,但是這會造成無盡的循環。我想獲得表格序列化,例如只有3 fomrs「



testen」 – user2105102 2013-02-24 19:37:51

+0

對不起,我錯了。我有6次類「阿賈克斯」在我的HTML代碼感謝它的工作很好 – user2105102 2013-02-24 19:42:47