Это мой второй набег на Ajax, и я не совсем уверен, как это осуществить.
Итак, у меня есть модальное окно, которое открывается, когда анонимный пользователь пытается выполнить определенную задачу.Окно содержит форму регистрации пользователя, которую я затем $ .post для моего входа в систему Django.Если имя пользователя / пароль действительны, пользователь регистрируется в коде состояния 1 и возвращается в качестве ответа.Если нет, возвращается статус 0.
Когда я пытаюсь сделать это вне js, это работает.Однако в моем сценарии это не удается.Я думаю, что это связано с ответом content_type и тем, как я его интерпретирую.Я не уверен.
def login_async(request):
if request.method=='POST' and len(request.POST['username'])<20 and len(request.POST['password'])<20:
username=request.POST.get('username', '') #probably need to script tags here
password=request.POST.get('password', '')
user=auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request,user)
status=1
response=HttpResponse()
response['Content_Type']="text/html"
response.write(status)
return response
else:
status=0
response=HttpResponse()
response['Content_Type']="text/html"
response.write(status)
return response
$('input#login').click(function(event){
$.post("/login_async/", {username:$('input[name=username]').val(), password:$('input[name=password]').val()}, //could also use $(this).serialize() here to capture all form inputs
function(data){
if(data==1){
$('#login').dialog("close");
}
});
});
В чем здесь проблема?Сначала я пытался вернуть ответ в виде JSON, но не мог понять, как заставить работать serialize.serializers ("json", status).Я продолжал получать ошибку.
Последний вопрос ...
Если я получу действительный статус (пользователь вошел в систему), это повлияет на поведение модальных окон на странице.Модальные окна открываются в зависимости от статуса входа в систему.Если пользователь вошел в систему, один набор окон открывается при событии щелчка, и наоборот.Этот переключатель зависит от контекста Django {% user.is_authenticated%}.
Этот контекст отображается правильно только один раз, при загрузке страницы?Могу ли я сделать что-нибудь, чтобы сообщить об изменении состояния модальным окнам, защищенным от легких взломов?