我正在创建一个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"}
我不知道这里发生了什么。任何人吗?
答案 0 :(得分:0)
您需要对request.POST使用QueryDict.getlist方法,然后将每个列表项从str反序列化为dict:
import json
data = request.POST.getlist('req_data[]', [])
data = [json.loads(item) for item in data]