jQueryを使用して、そのプロパティの1つとして配列を持つJSONオブジェクトをAPIエンドポイントに送信しようとしています。jQueryは、そのプロパティの1つとして配列を含むJSONを正しくPOSTしません。
let bidding = {
"name": $("#name").val(),
"applicant": $("#applicant").val(),
"start_date": $("#start_date").val(),
"end_date": $("#end_date").val(),
"products": []
}
$("#products").children(".dropdown").each(function(key, value) {
bidding.products.push(
{
"product_name": $(value).children(".btn").text(),
"quantity": $(value).children("input").val()
}
);
});
そして、私はconsole.log(JSON.stringfy(bidding))
を行うときに、それは例えば、期待と同じように解析します:私はこのようにそれを定義した
{
"name":"Material de Construção",
"applicant":"Prefeitura",
"start_date":"26/09/2017",
"end_date":"01/10/2017",
"products":[
{"product_name":"Cimento (5kg)","quantity":"200"},
{"product_name":"Tijolo","quantity":"100"},
{"product_name":"Caneta","quantity":"5"}
]
}
しかし、私が投稿するときには、$.post("/api", bidding);
私のAPIを使用すると、このようにそれを受け取ります:
{
name: 'Material de Construção',
applicant: 'Prefeitura',
start_date: '26/09/2017',
end_date: '01/10/2017',
'products[0][product_name]': 'Cimento (5kg)',
'products[0][quantity]': '200',
'products[1][product_name]': 'Tijolo',
'products[1][quantity]': '100',
'products[2][product_name]': 'Caneta',
'products[2][quantity]': '5'
}
どのように私はそれがそうjQueryのは、アレイ内の各エントリのための新しいプロパティの作成を停止し、代わりに単一のプロパティとして配列全体を送信することができますか?
を維持するのは良い考えですので、私は先に行って、私の$ .post」/ API)を;」に置き換え"$ JAX({type:" POST "、url:"/api "、data:JSON.stringify(bidding)、processData:false、contentType:" application/json "、dataType:" json "、success:function (){}}); "そして、それはうまくいった。 –