Как разместить массив в контроллер MVC - PullRequest
0 голосов
/ 26 июня 2019

Я хочу опубликовать объект java-скрипта на контроллере mvc

$(document).ready(function () {
        var table = $('#my_table_1').DataTable({
            "paging": true,
            "ordering": true,
            "info": true,
            "search": true,
            "pageLength": 100
});
var d = '';
var data3 = table.on('search.dt', function () {
    //number of filtered rows
    //  console.log(table.rows({ filter: 'applied' }).nodes().length);
    //filtered rows data as arrays
    d = table.rows({ filter: 'applied' }).data()
});
console.log(table.rows({ filter: 'applied' }).data());
$('#excel2').click(function (e) {
    //var data3 = table.on('search.dt', function () {         
    //    console.log(table.rows({ filter: 'applied' }).data());
    //    console.log(data3);
    //});
    console.log(d);
    $.ajax({
        url: '/Administrator/TestDownload',
        type: 'POST',
        data: {data:d},
        cache: false

    }).done(function (response) {
        alert(d);
       });
    });
});

// Код контроллера:

public JsonResult TestDownload(String[] data)
    {
        return Json(data,JsonRequestBehavior.AllowGet);
    }

Я получаю значение NULL в контроллере в качестве параметра данных

Ожидается: требуется получить объект данных из представления в контроллер в качестве параметра в контроллере.

Факт: параметр данных в контроллере равен нулю

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Вы должны проверить правильность формата массива переменной d.

Я проверил на моей стороне с var d = ["test",2,3] и в контроллере он получил правильные данные.

$('#excel2').click(function (e) {
    //var data3 = table.on('search.dt', function () {         
    //    console.log(table.rows({ filter: 'applied' }).data());
    //    console.log(data3);
    //});
    d = ["test",2,3]
    console.log(d);
    $.ajax({
        url: '/Administrator/TestDownload',
        type: 'POST',
        data: {data:d},
        cache: false

    }).done(function (response) {
        alert(d);
       });
    });
});
0 голосов
/ 27 июня 2019

Пример, который работает:

        var test = ["This", "is", "a", "test"];
        $.ajax({
            type: "POST",
            traditional: true,
            url: "Administrator/TestDownload",
            data: { array: test }
            }
        });

Контроллер (в VB.net):

Function TestDownload(array As String()) As ActionResult
//do something
End Function
0 голосов
/ 26 июня 2019

Почему бы не попробовать stringifying данные и настройки contentType

$.ajax({
    url: '/Administrator/TestDownload',
    data: JSON.stringify({data:d}), // use JSON stringify
    type: 'POST',
    contentType: "application/json; charset=utf-8", //add this
    cache: false    
}).done(function (response) {
    alert(d);
   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...