jQuery自动完成方法没有';我不能正常工作
我正在尝试使用jQuery自动完成方法获取一个下拉列表,从API获取一个数据列表,但它似乎处于关闭状态,如有任何帮助,将不胜感激 剧本:jQuery自动完成方法没有';我不能正常工作,jquery,jquery-ui,asp.net-core-mvc,Jquery,Jquery Ui,Asp.net Core Mvc,我正在尝试使用jQuery自动完成方法获取一个下拉列表,从API获取一个数据列表,但它似乎处于关闭状态,如有任何帮助,将不胜感激 剧本: $(document).ready(function () { $('#autocomplete2').autocomplete({ source: function (request,response) { $.ajax({ url: '/
$(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");
}
[HttpPost]
公共异步任务自动完成(字符串输入)
{
BadooBot=新的BadooBot();
返回等待bot.GetCities(输入,“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);
}
公共异步任务GetCities(字符串输入,字符串sessionId)
{
MediaTypeFormatter jsonFormatter=新的JsonMediaTypeFormatter();
HttpClient=新的HttpClient();
var obj=JsonSerializerToObject.SerializeToObject(“{”版本\“:1,\”消息类型\“:29,\”消息id \“:92,\”正文\:[{”消息类型\“:29,\”服务器搜索位置\“:{”带国家\“:false,\”查询\“:\”+”输入+“\”}],\”是背景\“:false”);
HttpContent=新的ObjectContent(obj,jsonFormatter);
var请求=新的HttpRequestMessage
{
RequestUri=新的Uri(“https://eu1.badoo.com/webapi.phtml?SERVER_SEARCH_LOCATIONS"),
方法=HttpMethod.Post,
Headers={{“X-Session-id”,“s1:134:ik5ki4ohc0vfgpqzkjeykmnffnr1aroyvpwzryy”},
内容=内容
};
var res=await client.sendaync(请求);
var locationResultModel=await res.Content.ReadAsStringAsync();
var objRes=JsonConvert.DeserializeObject(locationResultModel);
列表位置模型=新列表();
foreach(objRes.Body中的变量项)
{
if(item.ClientLocations.Locations!=null)
{
var locationList=item.ClientLocations.Locations;
foreach(locationList中的var singleLocation)
{
var tempModel=new LocationModel(){City=singleLocation.City.Name,Country=singleLocation.Country.Name,Region=singleLocation.Region.Name};
locationModel.Add(tempModel);
}
}
}
返回JsonConvert.SerializeObject(locationModel);
}
为了更容易理解该方法,他正在调用一个api服务,检索位置,然后将位置存储在locationModel列表中并返回JSON
一切正常,但当下拉菜单出现时,它不起作用,以下是输入外观的快照和我得到的响应:
最后,输入的html本身:
<form id="autoCompleteForm">
<input id="autocomplete2" asp-for="input" type="text" >
</form>
好吧,我想出来了,有趣的是,我花了一整天的时间,直到我在这里问它lol,问题是我试图发送一个复杂的模型,这意味着模型有“国家”、“城市”、“地区”,所以它无法使用它,我使用字符串生成器将所有字段附加到一个字符串中,然后才将其添加到列表中,然后发送该列表 旧列表模型:
{"LocationModel":[
{ "Country":"John"},
{ "City":"Anna"},
{ "Region":"Peter"}
]}
{"LocationModel":"Country + City + Region"}
新列表模型:
{"LocationModel":[
{ "Country":"John"},
{ "City":"Anna"},
{ "Region":"Peter"}
]}
{"LocationModel":"Country + City + Region"}
所以现在它是一个简单的对象,而不是一个有字段的对象。
也许有一种方法可以按照我想要的方式去做,但是如果有人有同样的问题,这对我来说是有效的