我想通过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中。
答案 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的其余部分将被丢弃。