2017-01-02 90 views
-2

我試圖通過的「這個」對象的ID從Ajax調用Django的看法,但我得到我的broswer以下錯誤:下面的ajax代碼有什麼問題?

404 error

因爲我是初學者都Django和AJAX是這就是代碼中可能存在錯誤的原因。

這裏是我的代碼:

views.py

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

def index(request): 
    template = 'librarysystem/Elib.html' 
    return render(request,template) 

def validateForm(request, id): 
    data = { 
     'isTaken' : Users.objects.filter(username__iexact=request.GET.get(id,None)).exists(), 
     #'emailidTaken' : Users.objects.filter(emailid__iexact=emailid).exists(), 
     } 
    return JsonResponse(data) 

urls.py

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

urlpatterns = [ 
    url(r'^registered/$',views.create_user), 
    url(r'^$', views.index, name="Index"), 
    url(r'^validate(?P<id>)/$',views.validateForm), 
    #url(r'^article/$', views.Article, name="Article"), 
] 

Ajax代碼:

<script type="text/javascript"> 
function validateForm() { 
     //var emailid = $('#emailid').val() ; 
     $.ajax({ 
      url: '/librarysystem/validate/this.id/', 
      data: { 
     'this.id': this.value, 
     //'emailid': emailid, 
      }, 
      dataType: 'json', 
      success: function(data){ 
        if (data.isTaken){ 
         $('#error').html(this.id + ' Already taken.').css('color','red'); 
        }else 
         $('#error').html(''); 
      } 
     }) ; 
    } 
$(document).ready(function() { 
    $('#retrypassword').keyup(checkPasswordMatch); 
    $("#username, #emailid, #password, #retrypassword").keyup(validateForm); 
}); 
</script> 

感謝您友好回覆:)

+0

該URL可能不存在。我假設。 –

+0

/librarysystem/validate/this.id/? this.id看起來應該被替換爲一個真正的ID值? –

+0

正如我在其他問題中所說的,您需要了解如何使用瀏覽器工具來查看實際錯誤。在這種情況下,雖然很明顯,正如axel指出的那樣。 –

回答

0

的問題是它沒有找到位置..有時 它可能會導致即使路徑是正確的,但端口是不是...

例如: 如果您使用localhost:8080,但它的發現在localhost:8000 我最近有這個問題,然後我改變了我的項目中的屬性文件。

0

附加的屏幕截圖給出了一個明確的答案,找不到請求的URL(錯誤404)。正如我在上面這個我的評論中提到,是因爲你使用的AJAY URL一個簡單的字符串:'/librarysystem/validate/this.id/'而不是串聯的URL靜態和動態部分:

$.ajax({ 
    url: '/librarysystem/validate/' + this.value + '/', 
    // the rest of your code.... 
    data: {} 
}); 

但是,從我在你的代碼示例這看可能不是唯一的問題 - 在給定的代碼中沒有提到'this.value