gpt4 book ai didi

javascript - 未捕获的类型错误 : $. ajax 不是函数 |在使用最新的完整 jQuery 版本时

转载 作者:行者123 更新时间:2023-11-30 14:07:47 24 4
gpt4 key购买 nike

我正在尝试让一些 AJAX 功能在我的网页上运行,但我对 javascript 还很陌生。我决定结合 Django 使用 jQuery 作为框架。但是我遇到了一个错误:$.ajax() 不是一个函数。我尝试通过多种方式和多个版本下载和引用 jQuery 代码来修复该错误,但我似乎无法修复它,有人可以帮助我吗?

我对 JQuery 脚本的引用是我从 https://code.jquery.com/jquery-3.3.1.js 下载的 HTML 文件的头部部分

<!-- 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 文件中使用的模型的 ID 号。 ajax 函数的想法是按钮会将对象“任务”标记为已完成。 ajax 函数应将 task.id 提供给服务器,服务器会将任务标记为已完成,而无需重新加载整个页面。

我的错误消息(不显示在我的系统控制台中,而是显示在 inspect element 的控制台中):

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'),
]

最佳答案

我的 $ 值被覆盖了,并且出于某种原因,当我使用 jQuery.ajax 时它也不起作用。这就是为什么我认为整个 jQuery 都不起作用的原因。我最终使用了@Louys Patrice Bessette 的解决方案,使用 .noConflict()

这最终成为我的解决方案:

<!-- JQuery -->
<script type="text/javascript" src="{% static 'home/jquery.js' %}"></script>

<script>
var $j = jQuery.noConflict();
</script>

然后使用$j.ajax 引用ajax

关于javascript - 未捕获的类型错误 : $. ajax 不是函数 |在使用最新的完整 jQuery 版本时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55083387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com