Ajax呼叫在Django不起作用



这是我的ajax调用:

<script>
    $(document).ready(function(){
        $("#butt2").click(function(){
            $.ajax({
                url:'{% url 'task:deletetask' %}',
                data:{'id':2 },
                type:"GET",
                success:function(text){
                    $("#task2").hide();             
                    alert(text);
            }});
        });
    });

</script>

这是我的视图功能:

class DeleteTaskView(generic.View):
    def get(self,request):
        id = request.GET.get('id',None)
        Task.objects.get(id=id).delete()
        return JsonResponse("Task Removed")

这是URL:

url(r'user/task/delete/$',views.DeleteTaskView.as_view(),name='deletetask'),

如果我删除了Ajax调用,只需添加警报功能,那么它正常工作,意味着jQuery正在工作,仅AJAX呼叫就有一些问题。帮助!

编辑:我将URL函数更改为:

url : "{% url 'task:deletetask' %}",

现在,该项目已从数据库中删除,但在成功中,响应hide和警报功能不起作用。

  1. 确保JS重新加载。
  2. 尝试测试URL(使用完整链接(
  3. 打开Broswer并按F12〜>控制台并向我展示错误...服务器或客户端错误?

JsonResponse可以 - 默认情况下 - 仅是数据的dict参数。

所以您应该有:

return JsonResponse({'text': 'Task Removed'})

如果您需要删除使用CSRF_Token在AJAX中传递post方法的数据。

<script>
    $(document).ready(function(){
        $("#butt2").click(function(){
            $.ajax({
                url:'{% url 'task:deletetask' %}',
                data:{'id':2 },
                type:"POST",
                headers: {
                  'X-CSRF-Token': {{csrf_token}}
                },
                success:function(text){
                    $("#task2").hide();             
                    alert(text);
            }});
        });
    });

</script>
from django.http import HttpResponse
from django.core import serializers
jsonObject = serializers.serialize('json', [{'text': 'Task Removed'}])
return HttpResponse(jsonObject)

最新更新