我被告知AJAX函数的success
负责发送数据后的所有工作,包括更新页面以显示后端为响应帖子而发送的任何数据。
当我打印成功时:function(res){console.log(res)}我可以在控制台日志中看到我新生成的HTML,在该日志中填充了HTML DIV,并在其中添加了Jinja FOR循环。
<div id="RIGHTCONTAINER" class="list-group" style="height:625px; overflow-y: scroll">
{% for model in model_list %}
<a href="#" data-set="{{ model_list|length }}" class="list-group-item py-0 list-group-item-action">{{ model }}</a>
{% endfor %}
</div>
对于console.log能够看到返回的数据,渲染生成的html,我感到很惊讶,但是如果我使用的是ajax,现在我可以通过某种方式在浏览器中显示它。
但是我可以使用ajax BELOW METHOD打印内容,但这对我来说并不理想,(因为我需要其他功能,因此我需要对RIGHTCONTAINER中的list-group-items进行操作,会在我的ajax成功函数中变成多个嵌套的ajax请求,而我发现自己陷入了困境)。
$.ajax({
type:'POST',
url:"home/view_results/onclick/",
data:{
selected_item:item_index, // Sending users selection
csrfmiddlewaretoken:"{{ csrf_token }}"
},
dataType:"text json",
success: function(resp){
console.log(resp); // console.log is able to print HTML
$("#RIGHTCONTAINER").append(resp.test_history)
$("#RIGHTCONTAINER > a").removeClass("active");
$("#RIGHTCONTAINER > a").hide();
$("#RIGHTCONTAINER").empty();
for(i=0; i<resp.model_list.length; i++){
$("#RIGHTCONTAINER").append('<a href="#" class="list-group-item py-0 list-group-item-action">'+resp.model_list[i]+'</a>');
}
$('#message').html("<h3>Data Submitted!</h3>")
}
})
我认为当我的AJAX请求发布成功时,它通过链接url:"home/view_results/onclick/"
调用了一个新函数,而我的urls.py
包含了以下这一行:
URLS.py
#app/urls.py
from django.urls import path, re_path
from . import views
results = views.View_Items()
urlpatterns=[
...
...
re_path(r'view_results/onclick/$', results.render_view_items_again, name = 'view_results_new'), # NEW
]
和我在调用AJAX时要渲染的渲染函数是这样的:
VIEWS.py
#app/views.py
from django.shortcuts import render
class View_Items():
def render_view_items_again(self, request):
selected_item_by_user = request.POST.get('selected_item')
# print(selected_item_by_user)
models = self.get_all_models(selected_item_by_user) #Fetches a list.
# print(models) #Tested if my list is populated.
return render(request, 'view_results/View_items.html',{
'model_list':models,
})