我正在创建一个电话比较项目。当用户单击比较按钮时,将出现一个侧面导航,当用户完成添加产品后,他将通过单击添加按钮来动态添加产品。然后用户将点击另一个比较按钮以比较产品 产品的所有名称都将作为数组从模板转到视图。
现在在视图中,比较函数将根据数组值抓取数据,并创建字典并将字典呈现给demo.html。
但是问题是当我使用XMLHttpRequest时,将一个数组发送到视图,并且compare函数正在抓取数据,但是我不能在这里使用render函数,而是返回JSONresponse。
但是我不知道如何在模板中显示jsonresponse数据。
请帮我解决。预先感谢
将数组发送到视图的函数:
function ComAction() {
let xhr = new XMLHttpRequest(),
data = new FormData();
data.append('csrfmiddlewaretoken', getCookie('csrftoken'));
brands.forEach(function (brand) {
data.append('brand', brand);
});
xhr.open('POST', 'compare_in/', true);
xhr.onload = function () {
if (xhr.status === 200) {
data = JSON.parse(xhr.responseText);
console.log(data);
alert('Data received successfully. Brands are ' + data.brands);
//var demo = xhr.base64.encode(JSON.stringify(data));
//console.log('http://127.0.0.1:8000/demo/'+demo);
window.location.replace(data.redirect_url);
} else if (xhr.status !== 200) {
alert('Request failed.');
}
};
xhr.send(data);
}
观看次数:
def compare(request):
if request.method == 'POST':
compare_res = request.POST.getlist('brand')
.
.
.
response_data = {
'brands': d3,
'redirect_url': 'http://127.0.0.1:8000/demo/'}
return JsonResponse(response_data)
return render(request, 'prodcutSearch/compare_in.html')
在网址中:
urlpatterns = [
path('compare_in/', views.compare, name='compare'),
path('demo/', views.demo, name='demo'),
]