簡體   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