2010-02-22 53 views
0

現在,我想要做的是在頁面上顯示一些列表,並從服務器中使用Jquery提取該信息。代碼如下:在jquery上的多個對象上做一個.post準備

<div class="list" name="category1" /> 
<div class="list" name="category2" /> 
<div class="list" name="category3" /> 

.... 

$(".list").ready(function(){ 
    $.post("/getData", "{name=category#}" 
    function(data) { 
     // Do something here to display the list 
    } 
); 
}); 

假設/的getData返回所需的UL ..../UL HTML數據,我怎麼去與回送的數據替換的div的文本?我嘗試了$ this.html(data)的不同變體,但沒有運氣。另外,有沒有辦法選擇div的名稱作爲.post參數發回?

回答

1

對於初學者,您的代碼中有一些錯誤。 ready事件應該用在文檔對象上,而不是列表類。此外,您在$ .post調用中缺少逗號。這裏是加入了一個動態方面的更正後的代碼。我沒有測試過它,但它應該可以阻止任何可能需要做出的細微更改。

$(document).ready(function() { 

    $('.list').each(function() { 
    var list = $(this); 
    $.post('/getdata', {category: list.attr('name')}, function(result) { 
     list.html(result); 
    }); 
    }); 

}); 
+0

太棒了。我不得不將它切換到.ajax,因爲我想在出現錯誤時做一些事情,但除此之外它完美無缺!謝謝! – Matthew 2010-02-22 19:28:53

+0

沒問題。很高興爲你工作。 – ryanulit 2010-02-22 19:37:46

0

嘗試$(div[name=category1]).html(dataFromResponse);

或者,如果你想在每格相同的文字:$(div.list).html(dataFromResponse);。這一切都取決於您的上下文,如果您沒有任何其他匹配選擇器,則可以跳過div

編輯根據評論:你的意思是這樣的嗎?

// fetch new content 
function getContentByCategory(name) { 
    $.post(
     '/getData', 
     {category: name}, 
     function(response) { handleResponse(name, response); } 
    ); 
} 

// change the looks 
function handleResponse(name, response) { 
    $('div[name='+name+']').html(response); 
} 

// trigger it all 
$('.list').each(function(){ 
    getContentByCategoryName($(this).attr('name')); 
}); 
+0

我希望有一個動態數量的列表,所以我一直在考慮在div [name = category#]中硬編碼是一個壞主意。我也希望使用類別名稱作爲post參數,以便服務器根據名稱返回不同的列表。 – Matthew 2010-02-22 17:54:58

相關問題