2010-10-09 36 views
0

我目前正在創建一個更新腳本,因此我有一個UL每個詳細的任務列表,下面的例子:jQuery的AJAX動作每個李

<ul id="tasks"><li id="task1">Task one</li><li id="task2">Task two</li><li id="task3">Task three</li></ul> 

我正在尋找一個jQuery的一種方式系統地遍歷每個li併爲每個特定的ID執行AJAX請求。更具體地說,我想自動執行此操作(無需用戶交互),以便按順序執行每個單獨的請求...例如,當li#1完成時,它將從下一個開始。

我可以通過使用下面的各立環,但我不能見得到的AJAX自動執行其請求

$('li').each(function(index) { task = $(this).attr('id'); /* perform the task */ }); 

誰能幫助?

+0

我也無法在您的代碼中看到ajax! 。你能證明它在哪裏嗎? – zod 2010-10-09 03:37:45

+0

問題不明。你需要編寫ajax代碼的幫助或者ajax代碼不工作嗎?或者它正在工作,但沒有按順序開火? – 2010-10-09 03:44:24

回答

0
$('li').each(function(index) {\ 

$.post("test.php", { name: "John", time: "2pm" }, 
    function(data){ 
    alert("Data Loaded: " + data); 
    }); 

    }); 

我在jquery函數裏面調用了jquery ajax函數。我希望這應該工作。

http://api.jquery.com/jQuery.post/

0

如果你想同時執行多項頁面元素的AJAX動作,你是更好的編譯它們放在一起,做與服務器的單一AJAX交互,然後解析響應。否則,如果您有一個包含100個項目的列表,則您將執行100次往返服務器的任務 - 除了效率以外。

所以,服用@佐的代碼爲基礎:

var idArray = array(); 

$('li').each(function(){ 
    idArray.push($(this).attr('id')); 
}); 

$.post(
    "test.php" , 
    { 
    ids: idArray.join(',') , 
    anything: "else" 
    } , 
    function(data){ 
    alert("Data Loaded: " + data); 
    }); 
}); 

在你的PHP(或其他服務器端語言)腳本,您只需將ids變量分成個人價值,對它們進行處理每一個,和然後連接已完成的響應(可能使用JSON),然後確保$.post()中的功能根據需要解析數據。

1

,直到用完<li>元素,去.next() AJAX的成功,這樣你可以編寫一個循環的功能:

function execTask(li) { 
    if(!li.length) return; //no more left, abort out 
    $.ajax({ 
    url: "something", 
    data: { task: li.attr("id") }, 
    success: function() { execNextTask(li.next()); } 
    }); 
} 

然後上載或當你想踢它,只是請撥打第一個<li>,如下所示:

execTask($('#tasks li:first')); 
+0

很好用! – 2011-04-06 17:36:04