Почтовый запрос почтальона дает правильный результат, но ajax сообщение дает Count = 0 - PullRequest
0 голосов
/ 08 мая 2020

JS:

newRecords = [{
    "id": 7,
    "name": "Raddish",
    "rate": 30,
    "weight": "2",
    "amountperweight": 60
  },
  {
    "id": 8,
    "name": "Peas",
    "rate": 35,
    "weight": "4",
    "amountperweight": 140
  }
]

$.ajax({
  method: "POST",
  url: "http://localhost:36551/Orders/GenerateOrder",
  data: ({
    "generateOrder": newRecords
  }),
  contentType: "application/json, charset=utf-8",
  success: function(response) {
    console.log("response", response);
  },
  error: function(error) {}
});

Asp. Net:

 public class OrderCart
        {
            public int id { get; set; }
            public string name { get; set; }
            public int rate { get; set; }
            public string weight { get; set; }
            public int amountperweight { get; set; }
        }

    [HttpPost]
    [Route("GenerateOrder")]
    [ActionName("GenerateOrder")]
    public List<OrderCart> GenerateOrder(List<OrderCart> generateOrder)
    {
        return generateOrder;
    }

Почтальон ответ: Postman Post response

Ajax Опубликовать ответ в VS:

Ajax Post response in VS

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Измените данные строки в

data: JSON.stringify([
{ 
    id: 0,
    name: '',
    rate: 0,
    weight: 0,
    amountperweight: 0
},
{ 
    id: 0,
    name: '',
    rate: 0,
    weight: 0,
    amountperweight: 0
},
...
]),

, если переменная newRecords имеет формат

    [
    { 
        id: 0,
        name: '',
        rate: 0,
        weight: 0,
        amountperweight: 0
    },
    { 
        id: 0,
        name: '',
        rate: 0,
        weight: 0,
        amountperweight: 0
    },
    ...
    ]

сделайте это

data: JSON.stringify(newRecords),
0 голосов
/ 08 мая 2020

Код на стороне клиента будет выглядеть так:

@section scripts{
    <script>
        $(function () {
            var generateOrder = [{ "id": 7, "name": "Raddish", "rate": 30, "weight": "2", "amountperweight": 60 },
            { "id": 8, "name": "Peas", "rate": 35, "weight": "4", "amountperweight": 140 }];

            $.ajax({
                method: "POST",
                url: "/Orders/GenerateOrder",
                data: JSON.stringify(generateOrder),
                contentType: "application/json, charset=utf-8",
                success: function (response) {
                    console.log("response", response);
                },
                error: function (error) {
                }
            });
        })
    </script>
}

Действие на стороне сервера будет:

[HttpPost]
        public List<OrderCart> GenerateOrder(List<OrderCart> generateOrder)
        {
            return generateOrder;
        }

Теперь Visual Studio должна работать должным образом.

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