Я пытаюсь заставить некоторые функции AJAX работать на моей веб-странице, и я совершенно новичок в javascript. Я решил использовать jQuery в качестве фреймворка в сочетании с Django. Но я столкнулся с ошибкой: $ .ajax () не является функцией. Я пытался исправить ошибку, загружая и ссылаясь на код jQuery несколькими способами и несколькими версиями, но, похоже, я не могу это исправить, может кто-нибудь мне помочь?
Моя ссылка на скрипт JQuery в разделе заголовка моего HTML-файла, загруженного с https://code.jquery.com/jquery-3.3.1.js
<!-- JQuery -->
<script type="text/javascript" src="{% static 'home/jquery.js' %}"></script>
Файл находится в моей папке myapp / static / myapp, я проверил консоль, и он нашел файл.
Мой вызов ajax:
{% block javascript %}
<script type="text/javascript">
function finishedbutton(pk) {
$.ajax({
url: 'task/mark/',
data: {
'taskid': pk
},
dataType: 'json',
success: function (data) {
if (data.finished) {
alert("SET AS FINISHED")
}
else {
alert("SET AS NOT FINISHED")
}
}
});
};
</script>
{% endblock %}
Моя кнопка в моем html-файле, вызывающая функцию:
<button onclick="finishedbutton( '{{task.pk}}' )">
<div class="taskbutton text-center">
Fini
</div>
</button>
Task.pk - это номер модели, которую я использую в своем HTML-файле. Идея функции ajax заключается в том, что кнопка помечает объект «задача» как завершенный. Функция ajax должна передавать файл task.id серверу, который помечает задачу как выполненную без перезагрузки всей страницы.
Мое сообщение об ошибке (отображается не в моей системной консоли, а в консоли из элемента inspect):
Uncaught TypeError: $.ajax is not a function
at finishedbutton ((index):27)
at HTMLButtonElement.onclick ((index):115)
Я не знаю, нужно ли это, но вот мои views.py и urls.py:
views.py:
from django.shortcuts import render, redirect
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
from projects.models import Project, Task
from django.http import HttpResponse, JsonResponse
def MarkTask(request):
pk = request.GET.get('taskid', None)
print(request.GET)
task = Task.objects.get(pk=pk)
if task.finished == True:
task.finished = False
else:
task.finished = True
task.save()
data = {'finished': task.finished}
return JsonResponse(data)
urls.py:
from django.urls import path
from . import views
from django.contrib.auth.decorators import login_required
urlpatterns = [
path('task/mark/', views.MarkTask, name='projects-marktask'),
]