Ajax массив превращается в ассоциативный массив - PullRequest
0 голосов
/ 05 апреля 2020

Итак, я создаю API в Ruby на Rails и пытаюсь заставить массив отправляться через ajax.

Это кажется довольно простой задачей, если бы не было ' t для факта, что массив принимается как ассоциативный массив, отличный от обычного массива!

В основном массив с объектами как:

[
        {
            "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"}]

Это JS, который я использую для тестирования API:

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);

         })
}

Как я могу преобразовать свою полезную нагрузку в go как обычную массив вместо ассоциативного?

1 Ответ

0 голосов
/ 05 апреля 2020

Вы можете сделать следующее:

Обратите внимание, что это решение может обрабатывать любое количество отправлений.

var shipments = [
  {
      "shipping_id":"1",
      "option":"1"
  },
  {
      "shipping_id":"2",
      "option":"2"
  }
]

var payload = {}

shipments.map(
  function(shipment, index){
    payload["$".concat(index)] = shipment;
  }
);

console.log(payload);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...