次のようにリクエストする必要があります。
var url="http://127.0.0.1:8080/simulate/";
$.ajax({
url: url,
type: 'POST',
data:{ student_num:10,
company_num:10,
students:"",
csrfmiddlewaretoken:'{{csrf_token}}',
companies:[{weight:10},{weight:11},{weight:9}]
},
success: function(data, textStatus, xhr) {
var text=xhr.responseText
console.log(text)
}
});
しかし、この方法では、request.POST
オブジェクトは をcompanies
ネストされた json 配列に編成していません。代わりに、次のように 2D 配列にします。
<QueryDict: {u'student_num': [u'10'], u'students': [u''], u'companies[2][weight]': [u'9'], u'companies[1][weight]': [u'11'], u'company_num': [u'10'], u'companies[0][weight]': [u'10'], u'csrfmiddlewaretoken': [u'RpLfyEnZaU2o4ExxCVSJkTJ2ws6WoPrs']}>
companies
このように、をオブジェクトのリストに再編成するのは難しいと感じています。他のいくつかの質問を確認しましたが、これを行うべきだと言う人もいます:
companies:"[{weight:10},{weight:11},{weight:9}]"
次にjson.loads
、文字列を解析してオブジェクトのリストに戻します。しかし、次のようなコードを使用すると、解析エラーが発生し続けます。
company_array = request.POST['company_array']
company_array = json.loads(company_array)
またはこれ:
company_array = json.load(StringIO(company_array))
では、ネストされた JSON オブジェクトを処理する正しい方法は何でしょうか?