Javascript Django-Ajax调用不输出任何内容
在我的项目中,如果表单无效,我使用AJAX向用户返回消息,而用户无需刷新页面 我进行了AJAX调用,但是结果并不是预期的: HTML表单:Javascript Django-Ajax调用不输出任何内容,javascript,jquery,django,ajax,Javascript,Jquery,Django,Ajax,在我的项目中,如果表单无效,我使用AJAX向用户返回消息,而用户无需刷新页面 我进行了AJAX调用,但是结果并不是预期的: HTML表单: <div id="testDiv"> </div> $('#signupForm input[type=text]').keyup(function() { var usernameField = $('#usernameField').val(); // Retrieved from SignUp
<div id="testDiv">
</div>
$('#signupForm input[type=text]').keyup(function() {
var usernameField = $('#usernameField').val(); // Retrieved from SignUpForm in forms.py, and has id of usernameField
var emailField = $('#emailField').val(); // Retrieved from SignUpForm in forms.py, and has id of emailField
var passwordField = $('#passwordField').val(); // Retrieved from SignUpForm in forms.py, and has id of passwordField
var confirmPasswordField = $('confirmPasswordField').val(); // Retrieved from SignUpForm in forms.py, and has id of confirmPasswordField
$.ajax({
url: '/users/signupval/',
data: {
'usernameField': usernameField,
'emailField': emailField,
'passwordField': passwordField,
'confirmPasswordField': confirmPasswordField,
},
dataType: 'json',
success: function(data) {
$('#testDiv').text(data['message']);
console.log("Worked!")
},
error: function(err) {
console.log(err)
}
})
})
def signupval(request):
form = SignUpForm(request.GET)
if form.is_valid():
usernameField = form.cleaned_data.get('usernameField')
emailField = form.cleaned_data.get('emailField')
passwordField = form.cleaned_data.get('passwordField')
confirmPasswordField = form.cleaned_data.get('confirmPasswordField')
if len(usernameField) > 7:
return JsonResponse({'message': 'Username field > 7'})
elif len(emailField) > 5:
return JsonResponse({'message': 'Email field > 7'})
elif len(passwordField) > 6:
return JsonResponse({'message': 'Password field > 7'})
elif len(confirmPasswordField) > 6:
return JsonResponse({'message': 'Password field > 7'})
else:
return JsonResponse({'error': 'Something Failed. Please try again'})
视图.py:
<div id="testDiv">
</div>
$('#signupForm input[type=text]').keyup(function() {
var usernameField = $('#usernameField').val(); // Retrieved from SignUpForm in forms.py, and has id of usernameField
var emailField = $('#emailField').val(); // Retrieved from SignUpForm in forms.py, and has id of emailField
var passwordField = $('#passwordField').val(); // Retrieved from SignUpForm in forms.py, and has id of passwordField
var confirmPasswordField = $('confirmPasswordField').val(); // Retrieved from SignUpForm in forms.py, and has id of confirmPasswordField
$.ajax({
url: '/users/signupval/',
data: {
'usernameField': usernameField,
'emailField': emailField,
'passwordField': passwordField,
'confirmPasswordField': confirmPasswordField,
},
dataType: 'json',
success: function(data) {
$('#testDiv').text(data['message']);
console.log("Worked!")
},
error: function(err) {
console.log(err)
}
})
})
def signupval(request):
form = SignUpForm(request.GET)
if form.is_valid():
usernameField = form.cleaned_data.get('usernameField')
emailField = form.cleaned_data.get('emailField')
passwordField = form.cleaned_data.get('passwordField')
confirmPasswordField = form.cleaned_data.get('confirmPasswordField')
if len(usernameField) > 7:
return JsonResponse({'message': 'Username field > 7'})
elif len(emailField) > 5:
return JsonResponse({'message': 'Email field > 7'})
elif len(passwordField) > 6:
return JsonResponse({'message': 'Password field > 7'})
elif len(confirmPasswordField) > 6:
return JsonResponse({'message': 'Password field > 7'})
else:
return JsonResponse({'error': 'Something Failed. Please try again'})
message属性被传递回AJAX,我想在我拥有的div(testDiv)中显示message,但是div是空的,没有文本。我知道正在调用success函数,因为在通过Chrome的Javascript控制台中,我看到了`console.log(“Worked!”)。有人知道为什么没有显示消息的问题吗?谢谢。您在每次按键时都会调用Ajax吗?为什么你不只是在客户机上进行验证?使用console.log调试,查看发送到服务器的内容,返回的内容(网络选项卡)@epascarello这是什么意思?@epascarello每次用户在我的表单中键入内容时,我都会检查它是否符合要求?除了这个,你还有什么选择呢?一个快速的打字机会同时发出大量的http请求。这是个坏主意。您有检查长度的基本验证,它应该在客户端和服务器端完成。HTML5验证很容易连接@epascarello No。检查长度功能只是为了测试AJAX。稍后我将用其他东西替换它,我只是想确保AJAX正常工作。