2014-03-26 33 views
0

我有其中有各行中的數據 - 屬性的列的HTML表格,像<td data-XXX="####">,我想找到的每個細胞(可與同步循環訪問每個data-XXX單元的最佳方式是什麼?

$table.find("[data-XXX]") 

除非有人有更好的方式來完成),獲取data-XXX屬性的值,將其傳遞給AJAX查詢,解析JSON結果,並將結果放置在帶有關聯data-XXX字段的<td>中。也許是所有最棘手的要求......我希望所有這些都是同步完成的,以最大限度地減少大量的服務器請求......所以下一個AJAX調用不會被創建,直到上一個表格單元格被填充。

所以......我的問題是特別的 - 什麼是同步循環訪問每個數據-XXX單元的最佳方式?

+2

這個稱號是絕對沒用.... – Doorknob

+0

呃..把所有的值的數組,它傳遞到服務器,然後發送返回結果的數組給客戶? –

+0

要做到這一點,更好的方法是收集所需的所有數據,並將其作爲JSON blob在單個AJAX調用中傳遞給服務器。 –

回答

1

根據你的描述,我認爲你需要一個接一個地完成ajax調用,所以下一個調用只有在前一個調用完成之後纔會啓動。 ajax調用本身仍然是異步的(因爲他們應該)。你可以是這樣做的:

function processData() { 
    var items = $table.find("[data-XXX]"); 
    var cntr = 0; 

    function next() { 
     if (cntr < items.length) { 
      var obj = items.eq(cntr); 
      // do your ajax call with obj 
      $.ajax(...).done(function(results) { 
       // process results returned from ajax call 
       // ... 

       // now do the next iteration 
       ++cntr; 
       next(); 
      }); 
     } 
    } 
    // start first iteration 
    next(); 
} 

的基本想法是,你設置了兩個狀態變量包含對象的列表來處理和跟蹤的哪一個下一個處理一個索引變量(您的jQuery對象)。然後,創建一個用於每次迭代的內部函數。在ajax調用的完成處理程序中,您增加計數器,然後開始下一次迭代。

+0

完美,謝謝。 –

相關問題