【发布时间】:2021-03-31 05:06:23
【问题描述】:
我想使用 ajax 将查询集返回到模板。
这是我在一个单独的 js 文件中的 ajax 函数:
$(document).ready(function(){
$("#data_to_plot_button").click(function(){
var serialized_data = $("#data_to_plot_form").serialize();
$.ajax({
url: $("data_to_plot_form").data('url'),
data: serialized_data,
type: 'post',
success: function(response){
$("#graph").append('<p>data returned successfuly</p>'); //this line is printed correctly.
$.each(response, function(i, val) {
$('graph').empty().append(
$('<li>').addClass('list-group-item list-group-item-success').text(val)
)
}); // this block adds nothing to the #graph div
}
})
});
});
还有我的views.py:
def my_products(request):
queryset_list_intro_products = Intro_products.objects.all().order_by('title')
products = 0
if request.method == 'POST':
products_checkbox = request.POST.get('products')
if products_checkbox:
products = serializers.serialize('json', list(queryset_list_intro_products))
context = {
'products': products,
}
return JsonResponse(context, status=200)
return render(request, 'users/basket/my_products.html')
根据对此question 的回答,我尝试访问response 中返回的products。但是 js 代码没有向#graph div 添加任何内容。
在 Chrome 中检查的网络选项卡的 XHR 部分中,ajax 调用的状态为 200,在预览部分中我可以看到 products 如下:
产品:“[{”model”:“products.intro_products”,“pk”:5,“fields”:{“products_intro”:假,“ip_sensor_intro”:假,“control_valve_intro”:假,“water_quality_sensor_intro” : false, "accessories_intro": true, "cover_intro": "photos/products/intro_cover/solutions.png", "title": "Accessories", "subtitle": "", "description": "
description
”、“detailed_description”:“”、“video_link”:“”、“is_published”:true、“image_left”:“”、“title_left”:“”、“description_left”:“” , "image_right": "", "title_right": "", "description_right": ""}},
如何在知道查询集的情况下访问 ajax 响应的字段?
【问题讨论】:
-
嗨,你错过了
#附近的$('graph').. -
@Swati 谢谢你的朋友,但没有帮助!
-
显示您的例外输出。另外,您添加的json是控制台结果吗?即:
console.log(response)?
标签: javascript jquery django ajax django-templates