我想创建一个学校网站,您必须在该网站上输入邀请代码才能注册。我想使用ajax POST请求验证此代码,但是当我尝试发出验证视图的请求时,它会使用 JSON 代码重定向到页面。
我的AJAX :
{%extends "base.html"%}
{%block content%}
<script>
$('#code_form').on('submit', function(evt){
evt.preventDefault();
let form = evt.target
$.ajax({
url: form.action,
type: "POST",
data: {'code': $('input[name="code"]')},
headers: {'X-CSRFToken': "{{csrf_token}}"},
success: function(data){
window.location.href = data.url;
let status = JSON.parse(data)['ok']
if(status){
console.log('Good code');//This not executing
}else{
console.log('Bad code');//this too
}
}
})
});
</script>
<form method = "POST" id = "code_form" action="{%url 'reg:submit'%}">
{%csrf_token%}
Enter your invite code: {{form.code}}<br>
<button id = "submit">Continue</button>
</form>
{%endblock%}
Views.py :
from .forms import StartF #form for code (contains only one field)
from django.http import JsonResponse
from django.core.exceptions import ObjectDoesNotExist
#here must be one more view, but it works fine
def submit(request):
code = request.POST.get('code')
data = {}
try:
user = Unregistered.objects.all().get(pk = code)
except ObjectDoesNotExist:
data['ok'] = False
else:
data['ok'] = True
return JsonResponse(data)
我的urls.py :
from django.urls import path
from . import views
from django.conf.urls import url
app_name = 'reg'
urlpatterns = [
url(r'^$', views.start, name='start'), #that one view
url(r'^ajax/submit/$', views.submit, name='submit'),#this view works not fine.
]
答案 0 :(得分:0)
确保将jquery.js包含到html文件中
将您使用ajax的代码放入$( document ).ready
$( document ).ready(function() {
...
$('#code_form').on('submit', function(evt){
...
}
...
}