我有一个名为 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/