我正在从控制器返回字符串数组到ajax调用。试图将这些值设置为文本框。在文本框中它没有填充。但我可以看到成功方法中的数据。
[HttpGet]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public JsonResult GetWorkNamesAutoPoplate(string companyName)
{
...
var newKeys = companyNameslst.Select(x => new string[] { x }).ToArray();
var json = JsonConvert.SerializeObject(newKeys);
return Json(json, JsonRequestBehavior.AllowGet);
}
JS
$(document).on('change', '[name="FindCompanyName"]', function () {
$('[name="FindCompanyName"]').autocomplete({
source: function (request, response) {
$.ajax({
url: "GetWorkNamesAutoPoplate",
type: "GET",
dataType: "json",
data: { companyName: $('[name="FindCompanyName"]').val() },
success: function (data) {
alert(JSON.stringify(data));
response($.map(data, function(item) {
console.log(item);
return {
value: item
}
}));
}
});
},
messages: {
noResults: "", results: ""
}
});
});
alert(JSON.stringify(data));
显示如下。
如何在文本框中填充此数据
答案 0 :(得分:0)
这可能会解决您的问题:
success: function (data) {
alert(JSON.stringify(data));
if (data != null) {
response(data.d);
}
}
此链接也可以帮助您获取一些信息:How to use source: function()... and AJAX in JQuery UI autocomplete
答案 1 :(得分:0)
你的json的返回类型是一个数组数组,我想你应该把它作为一个数组
返回var newKeys = companyNameslst.ToArray();
此外,您的数据已被序列化两次,
一行,
var json = JsonConvert.SerializeObject(newKeys);
,第二次来自JsonResult
动作过滤器
return Json(json, JsonRequestBehavior.AllowGet);
发送json数据,
return Json(newKeys, JsonRequestBehavior.AllowGet);
而不是
var json = JsonConvert.SerializeObject(newKeys);
return Json(json, JsonRequestBehavior.AllowGet);
应该有用。
希望这会有所帮助。