我正在構建一個應用程式,該應用程式根據用戶單擊的選項呈現一組卡片,我在選項單擊時使用 ajax,以便卡片在沒有頁面重新加載的情況下出現,但問題是我無法將卡片呈現到我的頁面中,我正在通過計算作為 Django 背景關系使用的前端值 return render(request,'base.html',{'context':context})
阿賈克斯:
<script>
function sendData(date){
$.ajax({
type : "POST",
url: "",
data: {
date : date,
csrfmiddlewaretoken:'{{ csrf_token }}',
click:'click'
},
});
return false;
}
</script>
視圖.py:
def datepicker(request):
if 'click' in request.POST:
return render(request,'datepicker.html',{'dates':availabe_dates,'time':time})
return render(request,'datepicker.html',{'dates':availabe_dates,'time':['choose a date']})
我試過給:
<div class="card-body">
{% for t in time %}
<p>{{t}}</p>
{% endfor %}
</div>
只choose a date顯示而不是卡片。我確信這if 'click' in request.POST:是在我嘗試給出一些列印陳述句時運行的
我試過回傳jsonResponse,這是它的輸出{time:Array(14)}
請幫助,因為我是 Ajax 和 Django 的新手
uj5u.com熱心網友回復:
第一種方法:
您可以將字典作為回應回傳并在 jQuery 中填充它,如下所示:
from django.http import JsonResponse
def datepicker(request):
if 'click' in request.POST:
return JsonResponse({'dates':availabe_dates,'time':time})
并在ajax成功:
<script>
function sendData(date){
$.ajax({
// rest of the code
success: function(response){
$.each(response.time, function (t) {
$(".card-body").append(t);
});
}
});
return false;
}
</script>
第二種方法:
您可以從視圖回傳 html 并將其添加到 ajax 成功方法中,如下所示:
from django.http import JsonResponse
from django.template.loader import render_to_string
def datepicker(request):
if 'click' in request.POST:
html = render_to_string('datepicker.html', {'dates':availabe_dates,'time':time})
return JsonResponse(html, safe=False)
并在 ajax 中:
<script>
function sendData(date){
$.ajax({
// rest of the code
success: function(response){
$(".card-body").html(response);
}
});
return false;
}
</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/407849.html
標籤:
