如何在django app中更改DIV内容

时间:2013-03-20 06:15:36

标签: javascript jquery html ajax django

我想通过ajax GET方法用新内容替换DIV内容。 问题是整个页面都加载到DIV中。但我想只加载新内容。

    function demoButton(){

        var forData = $('#For').text();
        var ageData = $('#Age').text();
        var occasionData = $('#Occasion').text();
        var URL ="http://127.0.0.1:8000/result/?age="+ ageData +"&occasion="+ occasionData +"&relationship="+ forData;

$.ajax({
    type: "GET",
    url: URL,
    success: function (response) {
        $("#testDIV").html(response);
    }
}); 
}

我的DIV块是:

<div id="testDIV"> 
 <ul id="products">
 {% for deal in deals %}
  <li data-price="{{ deal.price }}" > 
   <div class="product" >
          <div class="inner"> 
           <a href="/dailydeals/{{ deal.id }}/"><img src="{{ STATIC_URL }}/images/cimages/{{ deal.image }}" alt="image" style='width:177px;height:175px;' /> </a>
            <div class="similarProd"><a href="#">View similar product</a></div>
            <div class="heart"><a href="/usersl/{{user.id}}/{{ deal.id }}"><span>Engraved plaque fsor your<br>

              girlfriend</span></a></div>

            <div class="quickView"><a href="#qv_form{{ deal.id }}" id="fb_pop">QUICK VIEW</a></div>
            <div class="socialMedia"><a href="#"> <img src="/static/images/like.jpg" alt="Like" /></a></div>
          </div>
          <div class="description" style='width:177px;height:50px;'> <span class="price">{{ deal.price }}</span> {{ deal.description|safe }} <br />
           </div>
           <a href="/usersl/">Add to SL</a>
        </div>
                     </li>
   {% endfor %}
  </ul> 

        </div>

我正在开发一个基于Django的电子商务应用程序。我想用服务器获取的内容替换DIV的内容,以响应对服务器的GET请求。但问题是整个页面被加载到DIV中。

1 个答案:

答案 0 :(得分:2)

让您的视图返回适合您的div的HTML,而不是完整的页面。

例如,如果您的http://127.0.0.1:8000/result/ URL仅用于从AJAX调用中使用,那么让该URL的视图只呈现没有HEAD,BODY标记等的模板。

你可能有这样的模板:

<ul>
  <li>
    {{ object.value }}
  </li>
<ul>

请注意,它不会从base.html或任何其他模板扩展,因此在呈现模板时,只会呈现您指定的模板内容。没有什么可以阻止用户点击您的URL,在这种情况下,返回的结果将不是有效的HTML,无法在浏览器中显示。

还有其他选择。您可以使用AJAX响应中的JSON从服务器提供数据,并从JSON数据构建DOM。或者,您可以允许整个页面按原样提供,并使用jQuery仅使用返回页面的子部分替换div的内容,如下所示:

$('#result-div').load(URL + ' #container-div');

jQuery load()函数允许您指定要加载到您的div中的加载HTML的片段。在上面的示例中,服务HTML中的#container-div元素的内容将插入#result-div。提供的HTML的其余部分将被丢弃。