在POST到Django View之后,jQuery Ajax的成功不会运行

时间:2014-05-22 02:44:45

标签: jquery ajax django

所以我遇到了一个我无法解决的问题。我正在建立一个跟踪学生出勤率的应用程序。我需要AJAX调用来更改DOM并禁用学生的复选框(如果他们在场)。这应该在将有关其入口时间的数据输入数据库之后发生。

为清楚起见:

'#出勤'是带有复选框'

的表单

'输入#SELECT_ALL'是一个功能,它检查表单中的所有框以方便

'输入#左'是每个复选框的ID。 AJAX调用的success子句中的函数调用几乎与我构建的单独函数相同,它检查所有框,除了它禁用那些复选框(所以我怀疑这是一个问题,无论如何我不能禁用select_all框) 。

我有一个工作的ajax电话:

var frm = $('#attendance');

frm.submit(function(){
    $.ajax({
        type: frm.attr('method'),
        url: frm.attr('action'),
        data: frm,
        success: function(data){
            $('input#select_all').prop('disabled',true)
            $('input#left').each(function(){
                if (this.checked == true){
                    this.prop('disabled',true);
                }
            });
        }
    });
    return false;
});

成功发布了Django视图,视图更新了数据库中的考勤表:

def incoming(request):
    data = request.POST
    class_name = request.POST['class_name']
    list = [x for x in data.iterlists() if x[1][0] == 'on']
    names = [str(x[0]) for x in list]
    c = Class.objects.get(title=class_name)
    for x in names:
        n = Student.objects.get(name=x)
        attendance_query = Attendance.objects.get(class_instance=c.id, student=n.id)
        attendance_query.student_present = timezone.now()
        attendance_query.save()
    return HttpResponse(status=204)

整件事情很棒!除非ajax调用完全被说完并且没有调用成功函数。基本上似乎即使它获得HTTP响应,ajax调用仍然认为它没有成功。我是否有任何关于如何使这件事发挥作用的想法?

我基本上希望当前学生的复选框被禁用,这样他们就不能以错误的时间更新他们的出勤率。我还想禁用select_all复选框,因为它仍然可以选择禁用复选框。

那么我如何得到我的AJAX调用以运行其成功函数?我感到困惑。

我尝试过的一些事情:

更改成功功能以将参数作为输入。这样做了,除了它只是将浏览器发送到空白页面,这违背了进行ajax调用的目的。

编辑:所以我添加了一个单独的函数,在单击按钮后执行dom效果。我应该早点做到这一点,并且我有点不必要地复杂了ajax调用。但是,我仍然想知道为什么成功函数没有运行。

0 个答案:

没有答案
相关问题