繁体   English   中英

为什么以下jquery代码不起作用?

[英]Why doesn't the following jquery code work?

我试图查询数据库以查找用户键入的用户名是否已在数据库中。 如果是,则它应该显示消息“已经存在!” 但是没有显示该消息,而是在浏览器中出现以下错误:

500内部服务器错误

我已经在数据库中存储了用户名“ ahti”。

urls.py

from django.conf.urls import url
from .import views

urlpatterns = [
    url(r'^$', views.index, name="Index"),
    url(r'^validate/$',views.validateForm),
]

views.py

from django.shortcuts import render
from librarysystem.models import Users
from django.http import JsonResponse

def validateForm(request):
   username = request.GET.get('username',None)
   data = {
      'is_taken' : Users.objects.filter(username__iexact=username)
   }
   return JsonResponse(data)

我的jQuery代码:

function validateForm() {
  var username = $('#username').val();
  $.ajax({
    url: '/librarysystem/validate/',
    data: {
      'username': username
    },
    dataType: 'json',
    success: function(data) {
      if (data.is_taken) {
        alert("already taken!");
      }
    }
  });
}
$(document).ready(function() {
  $("#username").keyup(validateForm);
});

您应该使用错误显示在其中的浏览器工具来查看来自服务器的回溯。 那将告诉您的是您不能将查询集直接传递给JsonResponse; 您需要正确地序列化它。

但是,这似乎并不是您真正想要的。 您不在乎数据,仅在乎是否存在匹配项。 因此,您应该在该.exists()上传递.exists()的结果,这将为您提供一个布尔值:

data = {
  'is_taken' : Users.objects.filter(username__iexact=username).exists()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM