2011-08-19 112 views
-1

我有一個頁面,其中我正在使用ajax插入記錄...現在在JavaScript中我使用每個循環來循環html表格並插入數據庫中的行。但發生是因爲foreach循環執行速度快,有時,不插入一些記錄..所以我想使循環睡眠一段時間後,它已經執行第一次,然後...每次執行後暫停循環

有沒有什麼辦法來暫停for循環..我用setTImeout ..但它只是延遲它的第一次,而不是連續的時間... 這是我的代碼。

 function AddTopStories() { 
      $("#tBodySecond tr").each(function (index) { 
       $.ajax({ 
        type: "POST", 
        url: "AjaxMethods.aspx/AddTopStoriesPosition", 
        data: "{'articleID':'" + $("td:nth-child(1)", this).text() + "','siteID':1}", 
        dataType: "json", 
        contentType: "application/json", 
        success: function (data) { 
         window.setTimeout(showSuccessToast(data.d), 3000); 
        }, 
        error: function (data) { 
         window.setTimeout(showSuccessToast("Error:" + data.reponseText), 3000); 
        } 
       }); 
      }); 
     } 

Please help me to resolve this issue... its utmost important. 
*************************************UPDATED CODE AS PER THE CHANGES BY jfriend00********* 

function AddTopStories() { 
    var stories = $("#tBodySecond tr"); 
    var storyIndex = 0; 

    function addNext() { 
     if (storyIndex > stories.length) return; // done, no more to get 
     var item = stories.get(storyIndex++); 
     alert($("td:nth-child(1)", item).text()); 
     addNext(); 
    } 
} 

這只是沒有做任何事情......不通知......


回答

1

我建議你打破它成做一件故事,然後你從第一次像這樣的成功處理程序啓動下一個故事的函數:

function AddTopStories() { 
    var stories = $("#tBodySecond tr"); 
    var storyIndex = 0; 

    function addNext() { 
     if (storyIndex >= stories.length) return; // done, no more to get 
     var item = stories.get(storyIndex++); 
     $.ajax({ 
      type: "POST", 
      url: "AjaxMethods.aspx/AddTopStoriesPosition", 
      data: "{'articleID':'" + $("td:nth-child(1)", item).text() + "','siteID':1}", 
      dataType: "json", 
      contentType: "application/json", 
      success: function (data) { 
       addNext();   // upon success, do the next story 
       showSuccessToast(data.d); 
      }, 
      error: function (data) { 
       showSuccessToast("Error:" + data.reponseText); 
      } 
     }); 
    } 
    addNext(); 
} 
+0

我更新了我的問題,我已經添加了您提供給我的代碼..請檢查我的問題...根據更新代碼按照jfriend00更改..但它只是沒有做任何事情。 – Abbas

+0

我忘了我剛添加的一行。你必須第一次調用addNext()。 – jfriend00

+0

你只是一個很棒的男人....什麼是代碼...只是偉大的..從來沒有想過它可以完成..沒有循環和超時....高超的人....非常感謝。 – Abbas