Отправка данных с ajax на сервер методом get - PullRequest
0 голосов
/ 02 мая 2020

Это topi c не дублируется с другими, моя проблема в методе get, у меня есть эти данные:

var things = [
   { "name": "n1" },
   { "name": "n2" }
];

Ajax вызов:

$.ajax({
    url: /controller/GetList,
    data: JSON.stringify(things),
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});

На стороне сервера:

public JsonResult GetList(
    List<Thing> things) => Json("OK");

public class Thing
{
    public string name { get; set; }
}

Теперь, когда я вызываю ajax с методом: "POST" и получаю данные с [FromBody] на сервере, все в порядке, но если я хочу вызвать ajax с методом GET вещи на стороне сервера пустые или пустые, ПОЧЕМУ?

Я пытаюсь это:

data: JSON.stringify({ things: things })
traditional: true

Но это не работает

Мой проект в Asp. net Core 3.1

Ответы [ 3 ]

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

Просто укажите метод для GET:

$.ajax({
    type : "GET",
    url: /controller/GetList,
    data: JSON.stringify(things),
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});
0 голосов
/ 04 мая 2020

Если вы действительно хотите сделать GET HTTP-запрос и передать данные на JavaScript клиенте, вы можете попробовать передать их через строку запроса, как показано ниже.

var par = "";

$.each(things, function (i,val) {
    par += "&things[" + i + "].name=" + val.name;
});

$.ajax({
    url: "/controller/GetList?" + par.substring(1, par.length),
    //data: JSON.stringify(things),
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});

Действие GetList

public JsonResult GetList([FromQuery]List<Thing> things) => Json("OK");

Результат теста

enter image description here

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

Следует избегать отправки данных (в теле запроса) для GET запросов, поскольку это может иметь сложности. Многие сервисы не ожидают, что у GET запросов будет тело, и поэтому они просто игнорируют его.

Если данных не так много, вы можете попробовать отправить их в строке запроса, но я предлагаю просто используя POST

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