在Django AJAX的用户名验证用户名、Django、AJAX

2023-09-10 17:54:54 作者:旧心愿.

我要创建异步用户名验证, 其中,在用户名的输入值的变化,对数据库访问,看看该用户名是有效的使用。到目前为止,我有这个code,这似乎并没有工作。请帮我找到了那里的东西出了问题。谢谢!

我的HTML:

 < D​​IV>用户名和LT; / DIV>
<输入类型=文本名称=IDID =ID>
< D​​IV ID =idval>< / DIV>
 

我的脚本:

 <脚本>
传播CheckId(){
$获得('/注册/',{用户名:$(本).VAL()},
    功能(数据){
        如果(数据==真){
            $('#idval)HTML(你可以使用这个ID)。
        } 其他 {
            $('#idval)HTML(不可用)。
        }
});
}
传播的onChange(){
 $(#ID)改变(函数(){CheckId()})。
}
$(文件)。就绪(的onChange);
< / SCRIPT>
 

我的观点:

 高清注册(要求):
    如果request.method ==GET:
        P = request.GET.copy()
        如果p.has_key(用户名):
            名称= P [用户名]
            如果User.objects.filter(username__iexact =名):
                返回的Htt presponse(假)
            其他:
                返回的Htt presponse(真)
 
Django ajax 用户登录,Django1.7 JQuery Ajax验证用户注册集成小例子

解决方案

CheckId() $(本).VAL()是行不通的。您需要 $('#身份证')。VAL()

请参阅本次讨论如何使用关键字的工作

I want to create asynchronous username validation, where upon change of the value of the username input, the database is accessed to see if that username is valid for use. So far I have this code, which doesn't seem to work. Please help me in finding out where things went wrong. Thanks!

My HTML:

<div>Username</div>
<input type="text" name="id" id="id">
<div id="idval"></div>

My Script:

<script>
function CheckId() {
$.get('/signup/', {username: $(this).val()},
    function(data){
        if(data == "True"){
            $('#idval').html("You may use this ID");
        } else {
            $('#idval').html("Unavailable");
        }
});
}
function onChange(){
 $("#id").change( function() {CheckId()});
}
$(document).ready(onChange);
</script>       

My View:

def signup(request):
    if request.method == "GET":
        p = request.GET.copy()
        if p.has_key('username'):         
            name = p['username']
            if User.objects.filter(username__iexact=name):
                return HttpResponse(False)
            else:
                return HttpResponse(True)

解决方案

in CheckId() $(this).val() isn't going to work. You need $('#id').val()

See this discussion of how the this keyword works