Как я могу разобрать этот массив JavaScript с помощью функции карты? - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу проанализировать приведенный ниже массив JavaScript для использования в элементе управления автозаполнением.Требуется отобразить поле значения в текстовом поле автозаполнения и сохранить поле ключа как itemID.

{"Key":9886,"Value":"xxx"},{"Key":9887,"Value":"yyy"},{"Key":5634,"Value":"zzz"},{"Key":9888,"Value":"abcd"}

Я попробовал приведенный ниже код для сопоставления этого массива как источника для моего текстового поля:

var itemID;
  $("#txtbox").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: 'POST',
                    url: 'controller/Getdata',
                    data:JSON.stringify({'term' :request.term}),
                    dataType: 'json',
                    contentType: 'application/json',
                    success: function(data) {                    
                      response(
                            $.map(data,
                                function(object) {
                                    return {
                                        label: object.value,
                                        value: object.key
                                    }                                 

                                })
                )
                    },
                    error: function(xhr, status, error) {                      
                        alert(error);
                    }

                });
            },
            minLength: 2,
            select: function (e, ui) {
                e.preventDefault();
                $("#txtbox").val(ui.item.value); 
                itemID = ui.item.key;
            }

        });```

Appreciate any help on this. 


1 Ответ

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

Приведенный ниже код работал для отображения источника автозаполнения в массив словаря:

$("#txtbox").autocomplete({
        source: function (request, response) {
            $.ajax({
                type: 'POST',
                url: 'controller/Getdata',
                data: JSON.stringify({ 'term': request.term }),
                dataType: 'json',
                contentType: 'application/json',
                success: function (data) {
                    var parsedData = JSON.parse(data);
                    var arr = $.map(parsedData,
                        function (item) {
                            return {
                                label:item.Value,
                                value:item.Key
                            }}
                    );

                    response(arr);
                },
                error: function (xhr, status, error) {
                    alert('here');
                    var array = [];
                    response(array);
                }

            });
        },
        minLength: 3,

        select: function (e, ui) {
         e.preventDefault();
         $("#txtbox").val(ui.item.label);
         userID = ui.item.value;
        }

    });

Код контроллера, который возвращает словарь, был таким:

public ActionResult Getdata(string term)
        {
            var itemList= Provider.GetAllItems();
            var filteredItems = itemList.Where(x => x.Value.Contains(term));
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            string result = javaScriptSerializer.Serialize(filteredItems );
            return Json(result, JsonRequestBehavior.AllowGet);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...