Отправка данных объекта массива в Javascript в ASP. NET Core Controller с использованием AJAX () - PullRequest
0 голосов
/ 27 февраля 2020

Я перепробовал все другие решения, относящиеся к проблеме, но все еще не могу найти то, что мне не хватает в моем коде. Вот мой AJAX () код.

var group = JSON.stringify({ 'listofusers': listofusers });

console.log("listofusers : " + JSON.stringify({ 'listofusers': group }));
(Assuming I have my listofusers object ready, and yes i've checked the console and it has data inside.)


$.ajax({
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        type: "POST",
        url: url,

        data: group,
        success: function (data) {
            console.log("output : " + JSON.stringify(data));
            //doSend(JSON.stringify(data));
            //writeToScreen(JSON.stringify(data));
        },
        error: function (data) {
            console.log("error : " + JSON.stringify(data));
        },
    });

Вот мой серверный контроллер.

[HttpPost]
public IActionResult GetMesssage(List<UserModel> listofusers)
{
var g = listofusers;
}

Просто простая выборка с контроллера, чтобы я мог проверить, что данные с клиента сторона действительно отправлена.

Я пробовал атрибут [FromBody], но все еще не повезло в получении данных со стороны сервера.

Ответы [ 3 ]

1 голос
/ 27 февраля 2020

Вот рабочая демонстрация, как показано ниже:

1.Модель:

public class UserModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}

2.Просмотр (удаление Content-type):

<script>
    var listofusers = [
            { id: 1, name: 'aaa' },
            { id: 2, name: 'bbb' },
            { id: 3, name: 'ccc' }
        ];
    var group = { 'listofusers': listofusers };
    console.log(group);
    $.ajax({
        dataType: 'json',
        type: "POST",
        url: "/home/GetMesssage",
        data: group,
        success: function (data) {
            console.log("output : " + JSON.stringify(data));
        },
        error: function (data) {
            console.log("error : " + JSON.stringify(data));
        },
    });
</script>

3 . Console.log(group):

enter image description here

4.Результат: enter image description here

Обновление:

Другой способ, используя json:

1.View (изменить группу с JSON.stringify({ 'listofusers': listofusers }); на JSON.stringify(listofusers);):

<script>
    var listofusers = [
            { id: 1, name: 'aaa' },
            { id: 2, name: 'bbb' },
            { id: 3, name: 'ccc' }
    ];
    var group = JSON.stringify(listofusers);
    console.log(group);
    $.ajax({
        contentType:"application/json",
        dataType: 'json',
        type: "POST",
        url: "/home/GetMesssage",

        data: group,
        success: function (data) {
            console.log("output : " + JSON.stringify(data));
        },
        error: function (data) {
            console.log("error : " + JSON.stringify(data));
        },
    });
</script>

2. Контроллер (добавьте FromBody):

[HttpPost]
public IActionResult GetMesssage([FromBody]List<UserModel> listofusers)
{
     //...
}
0 голосов
/ 27 февраля 2020

Я нашел решение для своих проблем, ребята, но я просто хочу уточнить, что, возможно, есть обходной путь или другое решение для этого.

Я изучил данные, переданные "JSON. stringify ();» из AJAX (), и это как-то так.

"[[{\"ID\":0,\"UserID\":1014,\"Level\":\"support\",\"Department\":\"\",\"Facility\":\"Talisay District Hospital\",\"Firstname\":\"Joseph\",\"Middlename\":\"John\",\"Lastname\":\"Jude\",\"LoginStatus\":false,\"IPAddress\":\"192.168.110.47:12347\"},{\"ID\":0,\"UserID\":1014,\"Level\":\"support\",\"Department\":\"\",\"Facility\":\"Talisay District Hospital\",\"Firstname\":\"Joseph\",\"Middlename\":\"John\",\"Lastname\":\"Jude\",\"LoginStatus\":false,\"IPAddress\":\"192.168.110.47:15870\"}]]"

, на что мне было интересно, если формат JSON является фактором при разборе данных со стороны контроллера , (Что, конечно, глупо, поскольку существует только один формат JSON. (Или, может быть, есть другой, если есть, не могли бы вы опубликовать какой-либо источник для справки.))

, поэтому я попытался сериализовать фиктивные данные в моя модель в методе "JsonConvert.Serialize ()" и выходные данные JSON выглядят следующим образом.

[{"ID":0,"UserID":1014,"Level":"support","Department":"","Facility":"Talisay District Hospital","Firstname":"Joseph","Middlename":"John","Lastname":"Jude","LoginStatus":false,"IPAddress":"192.168.110.47:12347"},{"ID":0,"UserID":1014,"Level":"support","Department":"","Facility":"Talisay District Hospital","Firstname":"Joseph","Middlename":"John","Lastname":"Jude","LoginStatus":false,"IPAddress":"192.168.110.47:16709"}]

, и я попытался отправить выходные данные JSON из JsonConvert. Метод Serialize () для контроллера через AJAX (), и это сработало! И сейчас я чувствую себя таким облегченным, потому что эта проблема уже очень расстраивала.

Если что-то не так с тем, что я нашел, пожалуйста, ответьте, что может быть неправильным или правильным. Спасибо!

0 голосов
/ 27 февраля 2020

Вы можете попробовать это.

Сначала укажите параметр, который вы хотите передать:

$.ajax({
        url: url,
        type: "POST",
        data: {
            listofusers: JSON.stringify(listofusers),
        },
        success: function (data) {
        },
        error: function (error) {
        }
    });

Затем в вашем контроллере:

[HttpPost]
public IActionResult GetMesssage(string listofusers)
{
   var jsonModel = new JavaScriptSerializer().Deserialize<object>(listofusers); //replace this with your deserialization code
}

Что мы здесь вы передаете ваш объект как строку, а затем десериализуете его после получения на стороне контроллера.

Надеюсь, это поможет.

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