在我的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')
當我輸入用戶名(如果存在或不)會出現一個空的警報和時間我點擊'確定',表單被提交。 此外,錯誤不會出現。
任何想法爲什麼它不工作?
謝謝你的幫助。
你應該總是添加return false您$阿賈克斯塊之後,否則,無論如何你都會得到你的表單。 –
@SamueleMattiuzzo我編輯它。但沒有任何改變。 – Marcolac