私のdjangoアプリでは、ユーザー名が既に存在するかどうかを確認し、存在する場合はエラーを表示するためにajaxを使用しようとしています。
これが私が持っているものです
html:
<form method="post" id='my_form'>
{% csrf_token %}
<input id='username' type="text" name="username"/>
<button type="submit">Valider</button>
</form>
js:
$('#my_form').submit(function(){
var username = $('#username').val();
if (username == ''){
alert('please enter username');
return false;
}
$.ajax({
type: "POST",
url: "/auth_validate",
data: {'username': $('#username').val(), 'csrfmiddlewaretoken': '{{csrf_token}}'},
dataType: "text",
success: function(response) {
var response = $.parseJSON(response);
if (response.success){
return true;
}
else{
alert(response.error);
return false;
}
},
error: function(rs, e) {
alert(rs.responseText);
return false;
}
});
})
ビュー:
def auth_validate(request):
error = ''
success = False
if request.method == 'POST':
username = request.POST.get('username', None)
if not username:
error = _('Please enter username')
elif User.objects.filter(username__exact=username).exists():
error = _('Sorry this username is already taken')
else:
success = True
ajax_vars = {'success': success, 'error': error}
return HttpResponse(simplejson.dumps(ajax_vars), mimetype='application/javascript')
ユーザー名を入力すると(存在するかどうかに関係なく)、空のアラートが表示され、[OK]をクリックするとフォームが送信されます。また、エラーは表示されません。
なぜそれが機能しないのかについて何か考えはありますか?
ご協力ありがとうございました。