2010-02-22 51 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

相关问题