Итерация по словарю C # с использованием возвращаемого значения Json JQuery - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть словарь, который содержит, ну, строки: Ключ: «Х» Значение: «Y» например Это возвращается через JsonResult в моем контроллере:

 public JsonResult GetMachineSettings(string machine)
    {
        DataTable _dt = getmysettings_SqlCall;

        TaskSetting _mr= new TaskSetting(); //simply a dictionary of string,string
        foreach (DataRow _row in _dt.Rows)
        {
            _mr.Settings.Add( _row.Field<string>("SettingKey"), 
            _row.Field<string>("SettingValue"));
        }

        return Json(_mr);
    }

Это было вызвано и возвращено через Ajax-вызов jquery:

<script type="text/javascript">
$('#machines').change(function () {
   $(this).parents('form').submit();
    $.ajax({
        type: 'POST',
        url: '@Url.Action("GetMachineSettings")', // we are calling json method

        dataType: 'json',

        data: {
            _items: $("#machines").val() },
        success: function(_items) {

            var a=JSON.parse(_items);

            $.each(a.Record, function (i, record) {
                    alert(record.key + " " + record.value);
            });
        },
        error: function(ex) {
            alert('Failed to retrieve Tasks.' + ex);
        }
    });
    return false;
});

но он не работает и отправляет строку со всеми моими данными в формате Json из-за пустой ссылки, кроме как в цикле foreach:

{ "Настройки": { "X": "Y"}}

То, что я пытаюсь сделать, это показать простое предупреждение (на данный момент), которое будет отображать пару ключ / значение (и, что еще лучше, предупреждение для каждого ключа, а затем значение). Но я не уверен, как это можно сделать.

1 Ответ

2 голосов
/ 23 апреля 2019

Я пытался воспроизвести ваш код, измените вызов AJAX на этот

Удалить var a=JSON.parse(_items);, поскольку _items уже является объектом JSON

Изменить способ доступа (ключ, запись) в each метод.

И обратите внимание, что ваша собственность Settings в TaskSetting не Record.

 $.ajax({
        type: 'POST',
        url: '@Url.Action("GetMachineSettings")', // we are calling json method

        dataType: 'json',

        data: {
            _items: $("#machines").val()
        },
        success: function (_items) {
            //var a = JSON.parse(_items);
            $.each(_items.Settings, function (key, record) {
                console.log(key + " " + record);
            });
        },
        error: function (ex) {
            alert('Failed to retrieve Tasks.' + ex);
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...