[英]Why doesn't the following jquery code work?
我试图查询数据库以查找用户键入的用户名是否已在数据库中。 如果是,则它应该显示消息“已经存在!” 但是没有显示该消息,而是在浏览器中出现以下错误:
我已经在数据库中存储了用户名“ 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.