Django ajax将变量传递给视图

时间:2012-06-13 20:41:30

标签: django django-views django-ajax-selects

我是Django + Ajax的新手。我的问题是我无法从我的ajax POST请求中获取值。我正在使用jquery post

我的任务是对可拖动列表项进行排序。拖放不是问题。从POST请求获取值是个问题。它返回MultiValueDictKeyError

"Key 'ages' not found in <QueryDict: {u'action': [u'updateRecords'], u'ages[]': [u'80', u'81', u'79', u'82', u'83', u'84', u'85', u'86']}>"

这是我的ajax:

$(function() { 
    var url = ""; /* won't place it*/
    $("ul#ages").sortable({ opacity: 0.6, cursor: 'move', update: function() {
            var order = $(this).sortable("serialize") + '&action=updateRecords';
            $.post(url, order, function(theResponse){
                alert('success');
            });
        }
    });
});

以下是观点:

if request.is_ajax():
        if request.POST['action'] == "updateRecords":
            update_record_array = request.POST['ages']

            order_counter = 1;

            for record_id in update_record_array:
                Age.objects.filter(id=record_id).update(order_id=order_counter)
                order_counter += 1

任何人都可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

错误消息显示错误 - 您正在查找密钥ages,但是您正在发送带有一些额外方括号的ages[]内容。

如果您将这些括号放在字段名称中,则不需要它们 - 这是PHP主义。 (这可能不是你的错:已经知道jQuery会自己添加它们。)无论如何,你都希望使用request.POST.getlist(fieldname)来获取与该键相关的多个值的列表。