Проверка дубликата ключа во время процесса регистрации (Django, JS, Ajax) - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть функция JavaScript, которая вызывается onsubmit:

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))

1 Ответ

2 голосов
/ 06 декабря 2011

A в Ajax означает асинхронный. Предоставленная вами функция успеха выполняется не сразу, она вызывается после того, как браузер получит ответ от сервера, который будет после , который вы вернули из функции usernameCheck().

Вы не можете сделать эту проверку с возвращаемыми значениями, вы должны использовать обратные вызовы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...