【发布时间】:2026-01-02 00:35:01
【问题描述】:
我使用 django 创建了一个模型 company,其属性为 name 和 地址,并且只显示查询集中所有公司的名称。我想让jquery做的是在单击名称时显示相应的地址(通过ajax)。
以下是我的代码。所以 ajax 请求正在被正确处理并且能够显示相应的地址,但是所有 <ul class="address_result"> 每次都显示相同的东西,这是有道理的,因为我将 html(data) 添加到类中,因此它的所有元素。有没有办法分别为每个<div class="name_address"> 中的每个名称显示地址,也许添加 id?提前致谢!
JQuery:
$(function(){
$('.name').on('click', function(){
$.ajax({
type: "POST",
url: "/#link to backend get_address function/",
data:{
'name': $(this).html(),
'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val()
},
success: get_address_success,
datatype:'html'
});
});
});
function get_address_success(data, textStatus,jqXHR){
$('.address_result').html(data);
}
html:
{% for obj in list %}
<div class="name_address">
<h4 class="name">{{ obj.name }}</h4>
<ul class="address_result"></ul>
</div>
{% endfor%}
django 中的get_address函数:
def get_address(request):
if request.method == "POST":
company_name = request.POST.get('name','')
else:
company name = ''
companies = company.objects.filter(name=company_name) #Name different companies can have the same name in this case
context = {
'companies':companies
}
return render_to_response('ajax_get_address.html', context) #ajax_get_address.html just returns all companies' addresses that correspond to the name
解决方案:
$(function(){
$('.name').on('click', function(){
var Name=$(this).html();
$.ajax({
type: "POST",
url: "/#link to backend get_address function/",
data:{
'name': Name,
'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val()
},
success: get_address_success,
datatype:'html'
});
function get_address_success(data, textStatus,jqXHR)
{
$("#"+Name).html(data);
}
});
});
{% for obj in list %}
<div>
<h4 class="name">{{ obj.name }}</h4>
<ul class="address_result" id="{{obj.name}}"></ul>
</div>
{% endfor%}
【问题讨论】:
-
您的页面中是否有多个
.address_resultdiv? -
是的,html 中有一个 for 循环,它遍历查询集并显示所有公司名称,每次创建时。get_address函数长什么样子?在描述中添加
标签: javascript jquery html ajax django