javascript - 在注册过程中检查重复 key (Django、JS、Ajax)

标签 javascript jquery python ajax django

我有一个名为 onsubmit 的 JavaScript 函数:

function formCheck(){
    return usernameCheck() && passwordCheck();
}

passwordCheck() 工作正常并按预期返回内容,但由于某种原因 usernameCheck() 出现问题:

function usernameCheck(){ //returns true if username is free
var ajaxHeaders = {}; //create header object
ajaxHeaders["X-CSRFToken"] = getCookie('csrftoken'); //add csrftoken from cookies for authentication server-side
$.ajax({
    type:'POST',
    url:"http://omnicloud.me/signup", 
  data:{username: $("#username").value}, 
  success:function(response){
    if(response=="true"){
       $('#passAlert').innerHTML("Sorry, that username is already taken") 
       //passalert is where all of the errors (username taken, invalid password) show up
    }
    },
headers: ajaxHeaders //settings for ajax request
});

return !($('#passAlert').value == "Sorry, that username is already taken")
}

在后端:

def signup(request):
if request.method == 'GET':
    return render_to_response('signup.html', context_instance=RequestContext(request))
elif request.is_ajax(): 
#query db for user with username provided via ajax, return if it exists
    try:    
        user = User.objects.get(username=request.POST.get("username")) 
    except User.DoesNotExist:
        return HttpResponse("false",context_instance=RequestContext(request))
    else:
        return HttpResponse("true", context_instance=RequestContext(request))

最佳答案

Ajax 中的 A 代表异步。您提供的 success 函数不会立即执行,而是在浏览器从服务器获取响应后调用,这将在您从 usernameCheck() 返回后> 功能。

您无法使用返回值进行此检查,您必须使用回调。

关于javascript - 在注册过程中检查重复 key (Django、JS、Ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394072/

相关文章:

javascript - 未捕获的语法错误 : Unexpected identifier - importing jquery

javascript - 在用 html 填写表单时,如何为无效值制作自定义 css 代码?

python - 通过另一个 DataFrame 对一个 DataFrame 中的行进行过滤和分组

javascript - fetch() 完成后如何调用函数

javascript - 如何在 jquery 中编写正则表达式来查找具有有效域名的有效 url 格式

JavaScript 为什么 'this' 未正确绑定(bind)

python - 在Python中, 'except Exception as e'和 'except Exception, e'有什么区别

python - Django:呈现具有 3 列的单选按钮,成本列必须根据所选的尺寸和数量进行更改

javascript - Angularjs - 获取指令内的主体元素

javascript - jQuery onClick 必须导致间歇性显示 <div> 或图像