首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写一个AJAX函数,将HTML加载到两个不同的DIVs中?

如何编写一个AJAX函数,将HTML加载到两个不同的DIVs中?
EN

Stack Overflow用户
提问于 2012-02-18 04:28:33
回答 2查看 3.5K关注 0票数 2

在构建活动提要的项目中,我使用Django和AJAX。它的工作方式,我们展示了朋友活动和全球活动。这就是我的HTML看起来的样子:

代码语言:javascript
复制
<div>
  {% include "friend_reviews.html" %}
  <div id="load-friends"></div>
</div>
<div>
  {% include "global_reviews.html" %}
  <div id="load-global"></div>
</div>
<a id="load-more" href="/load/feed/2">
  Load More
</a>

我想编写一个jQuery AJAX函数,它将把额外的评论加载到# load -friend和#load-全局。因此,我编写了一个Django视图(它拦截/load/feed/2)来查询数据库并返回:

代码语言:javascript
复制
context = {'friend_reviews': friend_reviews, 'global_reviews': global_reviews'}

friend_reviews和global_reviews都是Review的QuerySets。如果将friend_reviews插入friend_reviews.html部分模板,那么它将在页面上生成适当的HTML。

但是,我不太熟悉jQuery,也不知道生成正确的HTML的最佳方法是什么。我听说过Taconite,但是Python中没有例子,因此我们将非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-18 04:34:07

将jquery库包含在页面的顶部。

然后,这将完成以下工作:

代码语言:javascript
复制
$(document).ready(function(){   
    $.get("friend_reviews.html",function(data){     
            $('#load-friends').html(data);
      });
    $.get("global_reviews.html",function(data){     
            $('#load-global').html(data);
      });
});

如果您想通过单击该链接来完成此操作,则可以使用以下命令

代码语言:javascript
复制
// html
<a id="load-more">Load More</a> 

// Javascript
$(document).ready(function(){
    $('#load-more').click(function(){
    $.get("friend_reviews.html",function(data){     
            $('#load-friends').html(data);
      });
    $.get("global_reviews.html",function(data){     
            $('#load-global').html(data);
      });
                                   });
});
票数 3
EN

Stack Overflow用户

发布于 2012-02-18 14:58:57

如果您使用的是jQuery,那么使用$(selector).load(url)就更简单了。

代码语言:javascript
复制
$(document).ready(function(){
  $('#load-more').click(function(){
    $('#load-friends').load("friend_reviews.html");
    $('#load-global').load("global_reviews.html");
    return false;
  });
});

通过包含所需html的/load/feed/2呈现JSON,返回一个(Ajax)请求中所需的所有内容将更加有效。

使/load/feed/2视图返回JSON:

代码语言:javascript
复制
context = {'friend_reviews': friend_reviews, 'global_reviews': global_reviews}
response_data = {'friend_reviews': render_to_string('friend_reviews.html', context),
                 'global_reviews': render_to_string('global_reviews.html', context)}

return HttpResponse(json.dumps(response_data), mimetype="application/json")

那么您的javascript可以是:

代码语言:javascript
复制
$(document).ready(function(){
  $('#load-more').click(function(){
    $.getJSON($(this).attr('href'), function (data) {
      $('#load-friends').html(data.friend_reviews);
      $('#load-global').html(data.global_reviews);
      });

    return false;
  });
});

您需要注意您的url (/load/feed/2)现在呈现JSON,因此如果您需要或希望它仍然呈现HTML,您可能希望为JSON添加一个新的url

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9338546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档