0

现在,我想做的是在页面上显示一些列表,并使用 Jquery 从服务器中提取这些信息。代码如下所示:

<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 参数发回?

4

2 回答 2

1

对于初学者,您的代码中有一些错误。ready 事件应该用在文档对象上,而不是列表类上。此外,您在 $.post 调用中缺少逗号。这是添加了动态方面的更正代码。我尚未对其进行测试,但它应该可以工作,除非可能需要进行任何细微的更改。

$(document).ready(function() {

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

});
于 2010-02-22T19:03:42.900 回答
0

尝试$(div[name=category1]).html(dataFromResponse);

或者,如果您想在每个 div 中使用相同的文本:$(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'));
});
于 2010-02-22T17:32:02.430 回答