【发布时间】:2020-07-17 02:54:09
【问题描述】:
所以,我正在 Ruby on Rails 中构建一个 API,并试图强制通过 ajax 发送一个数组。
如果不是因为数组作为常规数组以外的关联数组被接收,这似乎是一件很容易的事!
基本上是一个包含以下对象的数组:
[
{
"shipping_id":"1",
"option":"1"
},
{
"shipping_id":"2",
"option":"2"
}
]
变成:
{"0"=>{"shipment_id"=>"1", "option"=>"1"}, "1"=>{"shipment_id"=>"2", "option"=>"2"}}
而不是
[{"shipping_id"=>"1", "option"=>"1"}, {"shipping_id"=>"2", "option"=>"2"}]
这是我用来测试 API 的 JS:
function select_shipping(){
obj1 = {
"shipment_id": "1",
"option": "1"
};
obj2 = {
"shipment_id": "2",
"option": "2"
};
var shipments = [obj1, obj2];
var payload = {
user_options: shipments
}
$.post('/shipping/calculate/select', // url
payload, // data to be submit
function(data, status, jqXHR) {// success callback
console.log(data);
})
}
如何将我的有效负载转换为常规数组而不是关联数组?
【问题讨论】:
-
为什么不使用 var shipping = {"$1": obj2,"$2": obj3}; ???
-
您可以动态处理货件,只是您知道如何检索 obj1 和 obj2 值。是否有更多的对象要提交?
-
好像有人问过你同样的场景,得到了答案stackoverflow.com/a/38175543/615274
-
您是否以 JSON 格式发送请求?如果将其视为表单数据,则 Rack 将散列数组编码为
foo[0][foo]=bar那是因为如果将其编码为foo[][foo]=barRack 无法知道密钥属于哪个散列。在 Ruby 中,“关联数组”也不是一个东西——它只是一个哈希,如果你想将它“转换”到一个数组中,你只需调用hash.values,这会自动使用强参数完成。
标签: javascript ruby-on-rails ajax api