Я пытаюсь получить раскрывающийся список с помощью метода автозаполнения 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.
все работает нормально, но когда выпадающий список не работает, вот снимок того, как выглядит вход, и ответ, который я получаю:
и, наконец, html сама для ввода:
<form id="autoCompleteForm">
<input id="autocomplete2" asp-for="input" type="text" >
</form>