用ajax post array data to server.
不能直接 JSON.stringify(array)吧,大家帮忙看下我下面这样的做法对不对?
只是在服务器端的解析好像不能一次性地simplejson.loads()就搞定,要层层地搞(虽然我的情况只有两层)
var array = Array();
for (var rowIndex = 0; rowIndex < checkbox.length; ++rowIndex)
{
var fund = checkbox[rowIndex].attributes.fund;
var subfund = checkbox[rowIndex].attributes.subfund;
var one = {"fund": fund.value, "subfund" : subfund.value};
one = JSON.stringify(one);
array.push(one);
}
params = {'subfunds': JSON.stringify(array),
"csrftoken": $.cookie("csrftoken"),
"csrfmiddlewaretoken": $.cookie("csrftoken")
}
var url = "{% url 'webservice-info-rt'%}";
var jqxhr = $.post(url, params);/* JSON.stringify(params)*/
jqxhr.done(function(data){
console.log("done, data is " + data)
});
服务端收到后:
request.DATA.keys()
[u'csrftoken', u'subfunds', u'csrfmiddlewaretoken']
request.DATA['subfunds']
u'["{\\"fund\\":\\"test fund 01\\",\\"subfund\\":\\"test sf 01\\"}","{\\"fund\\":\\"test fund 01\\",\\"subfund\\":\\"sf 02\\"}"]'
import simplejson as json
json.loads(request.DATA['subfunds'])
[u'{"fund":"test fund 01","subfund":"test sf 01"}', u'{"fund":"test fund 01","subfund":"sf 02"}']
看,最后得到的array里面,仍旧是string, 还需要再一次json.loads()
--
FROM 116.247.85.*