Моя функция для проверки наличия ajax на странице не работает
Я делаю проект на django, где есть выпадающий список поиска/фильтра для формы. Я использую select2 и ajax. Это не работает, и когда я пытаюсь отлаживать с помощью операторов печати, кажется, что функция is_ajax(request) не возвращает true.
Я знаю, что функция is_ajax() была устаревшей в JQuery, поэтому я определил ее сам. Однако моя, похоже, тоже не работает.
Вот часть моего представления, которая фильтрует объекты:
@login_required
def job_application_create(request):
form = JobApplicationForm()
if is_ajax(request):
print('TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING ')
term = request.GET.get('term')
companies = Company.objects.filter(name__icontains=term)
response_content = list(companies.values())
return JsonResponse(response_content, safe=False)
а вот определение is_ajax(request):
def is_ajax(request):
return request.headers.get('x-requested-with') == 'XMLHttpRequest'
Я также попробовал эту функцию:
def is_ajax(request):
return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
Вот JS на странице, где находится моя форма:
<script>
$(document).ready(function () {
$('#id_company').select2({
ajax: {
url: "{% url 'homepage' %}",
dataType: 'json',
processResults: function (data) {
return {
results: $.map(data, function (item) {
return {id: item.id, text: item.name};
})
};
}
},
minimumInputLength: 1
});
});
</script>
Здесь проверяется, является ли ваш запрос ajax или нет.
if request.is_ajax():
pass
Не нужна дополнительная функция для проверки того, является ли ваш запрос ajax или нет.