Мне сообщили, что функция success
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 НИЖЕ МЕТОДА, но это НЕ идеально для меня, (потому что у меня есть дополнительные функции, мне нужно вызывать операции над элементами группы списков внутри моего RIGHTCONTAINER, которая станет множественными вложенными запросами 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,
})