【问题标题】:page getting redirect after ajax requestajax请求后页面重定向
【发布时间】: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


【解决方案1】:

只需为表单的 onSubmit 事件创建单独的方法并取消表单提交,因为您的表单实际上将通过 ajax 调用提交。 这是代码sn-p

var ajaxFormSubmit = function (e) {
        e.preventDefault();
  
  //your rest of code for ajax form submission
}

$('id_delete_student').on('submit', ajaxFormSubmit);

【讨论】:

  • 不,它不工作。再次响应重定向到其他页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 2018-07-10
  • 1970-01-01
相关资源
最近更新 更多