【发布时间】:2016-12-17 05:25:38
【问题描述】:
我是 ajax 新手,我想通过 ajax 请求从列表中删除学生,我想在特定 div 的同一页面上打印请求的响应。但响应被重定向到新页面。
这是我的意见.py
def delete_student(request):
response = {"status": False, "errors": []}
student_id = request.GET.get('student_id', '')
if request.method == "POST":
form = DeleteStudentForm(request.POST)
if form.is_valid():
student = Student.objects.get(
user__username = form.cleaned_data["username"]
)
student.delete()
response["status"] = True
else:
for key, value in form.errors.items():
tmp = {'key': key, 'error': value.as_text()}
response['errors'].append(tmp)
return HttpResponse(json.dumps(response))
这是我的 ajax 请求
function delete_student(student_id){
$.ajax({
url: Window.base.urls.delete_student+"?student_id="+student_id,
type: $this.attr('method'),
data: $this.serialize(),
success: function(response){
response = JSON.parse(response);
if(response.status){
console.log(student_id)
$('#id_response').append(JSON.stringify(response))
$('#id_student_'+student_id).remove();
$('#delete_more_student').removeClass('disabled');
$('#delete_more_student').attr('onclick', 'open_delete()');
}else{
$('#id_response').append(JSON.stringify(response));
}
}
});
return false;
}
这是我的表格
<form class="form-horizontal" id="id_delete_student" action="{% url 'delete_student' %}" role="form" method="post" onsubmit="return delete_student('{{ student.id }}')" style="display: none;">
{% csrf_token %}
<div class="row">
<div class="col-md-12">
<div class="form-group" id="id_username_error_parent_div">
<div class="col-md-12">
<label for="id_username" class="control-label">*Username:</label>
{{ delete_student_form.username }}
<small class="error-msgs error" id="id_username_error" style="display: none;"></small>
</div>
</div>
</div>
</div>
【问题讨论】:
-
您需要阻止表单提交 - 您可以通过在提交事件触发的 javascript 例程中调用 e.preventDefault() 来做到这一点
标签: javascript jquery ajax django django-forms