jQuery метод автозаполнения не работает должным образом - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь получить раскрывающийся список с помощью метода автозаполнения jQuery, получая список данных из API, но, похоже, он отключен, любая помощь будет принята с благодарностью.

скрипт:

   $(document).ready(function () {

        $('#autocomplete2').autocomplete({
            source: function (request,response) {
                $.ajax({
                    url: '/Actions/AutoComplete',
                    method: 'POST',
                    data: $("#autoCompleteForm").serialize(),
                    dataType: 'json',
                    success: function (data) {
                        response(data)
                    },
                    error: function (error) {
                        alert(error);
                    }
                })
            }
        })
    });

Метод действия:

[HttpPost]
    public async Task<string> AutoComplete(string input)
    {
        BadooBot bot = new BadooBot();
        return await bot.GetCities(input, "s1:379:TRRUJxhU0MNYtOiMOOlpKwL5StwQpkOmQFtSgmOV");
    }

Метод, который получает информацию и возвращает ее обратно:

     public async Task<string> GetCities(string input, string sessionId)
            {
                MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
                HttpClient client = new HttpClient();

                var obj = JsonSerializerToObject.SerializeToObject("{\"version\":1,\"message_type\":29,\"message_id\":92,\"body\":[{\"message_type\":29,\"server_search_locations\":{\"with_countries\":false,\"query\":\"" + input + "\"}}],\"is_background\":false}");

                HttpContent content = new ObjectContent<LocationQueryModel>(obj, jsonFormatter);
                var request = new HttpRequestMessage
                {
                    RequestUri = new Uri("https://eu1.badoo.com/webapi.phtml?SERVER_SEARCH_LOCATIONS"),
                    Method = HttpMethod.Post,
                    Headers = { { "X-Session-id", "s1:134:ik5Ki4OhC0VfGpQZKjEyKMnfWfNr1aROyvPwZRYy" } },
                    Content = content

                };
                var res = await client.SendAsync(request);
                var locationResultModel = await res.Content.ReadAsStringAsync();
                var objRes = JsonConvert.DeserializeObject<LocationResultModel>(locationResultModel);

                List<LocationModel> locationModel = new List<LocationModel>();
                foreach (var item in objRes.Body)
                {
                    if (item.ClientLocations.Locations != null)
                    {
                        var locationList = item.ClientLocations.Locations;
                        foreach (var singleLocation in locationList)
                        {
                            var tempModel = new LocationModel() { City = singleLocation.City.Name, Country = singleLocation.Country.Name, Region = singleLocation.Region.Name };
                            locationModel.Add(tempModel);
                        }
                    }
                }
                return JsonConvert.SerializeObject(locationModel);
            }

чтобы облегчить понимание метода, он звонит в службу API, извлекает местоположения, затем сохраняет местоположения в списке LocationModel и возвращает JSON.

все работает нормально, но когда выпадающий список не работает, вот снимок того, как выглядит вход, и ответ, который я получаю:

enter image description here

и, наконец, html сама для ввода:

<form id="autoCompleteForm">
     <input id="autocomplete2" asp-for="input" type="text" >
 </form>

1 Ответ

0 голосов
/ 22 марта 2020

Хорошо, я понял это, забавно, что это занимает у меня весь день, и только после того, как я спрашиваю об этом здесь, лол, проблема была в том, что я пытался отправить сложную модель, то есть модель имела "страну", "город", " регион, поэтому он не мог использовать его, я использовал построитель строк, чтобы добавить все поля к одной строке и только затем добавить его в список и затем отправить этот список.

старая модель списка:

{"LocationModel":[
  { "Country":"John"},
  { "City":"Anna"},
  { "Region":"Peter"}
]}

новая модель списка:

{"LocationModel":"Country + City + Region"}

так что теперь это простой объект, а не объект с полями. Возможно, есть способ сделать это так, как я хотел, но это сработало для меня если бы у кого-то была такая же проблема.

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