Django:ajax POST发送无法正常工作的对象数组的数据

时间:2014-09-01 11:06:09

标签: jquery ajax django

我正在创建一个JSON对象并将其推入一个数组。

var json_array = []
    var edit_info = {
                        'name': str_name,
                        'id': str_id,
                    };
    json_array.push(JSON.stringify(edit_info))

并尝试在POST请求中发送json_array

$.ajax({
        dataType: 'JSON',
        url: req_url,
        type: req_method,
        data: {'req_data': json_array},
        success: function(data){
            console.log(data.message)
        },
        error: function(){
            alert("Some error has occured.")
        }
    });

我看到浏览器(Chrome)的奇怪行为:它似乎传递了两个数组作为帖子数据:

req_data[]:{"name":"naveen","id":"11"}
req_data[]:{"name":"kavi","id":"13"}

不应该这样吗?

req_data[]: [{"name":"naveen","id":"11"}', {"name":"kavi","id":"13"}]

但是在views.py中request.POST显示了应该发布的数据:

{u'req_data[]': [u'{"name":"naveen","id":"11"}', u'{"name":"kavi","id":"13"}']}

request.POST['req_data[]']显示

{"name":"kavi","id":"13"}

我不知道这里发生了什么。任何人吗?

1 个答案:

答案 0 :(得分:0)

您需要对request.POST使用QueryDict.getlist方法,然后将每个列表项从str反序列化为dict:

import json
data = request.POST.getlist('req_data[]', [])
data = [json.loads(item) for item in data]