我想用数据库中的数据填充我的自动完成
。
所以我在 c# 中写了一个方法来从 db 中读取它:
public string[] GetNames()
{
var names = unitOfWork.deviceRepository.Get().Select(w=>w.Name);
return names.ToArray();
}
这很好用。所有需要的数据都在名称中。
现在我使用 Ajax 将这些数据发送到客户端:
$(function () {
var availableTags;
$.ajax({
url: "/DeviceUsage/GetNames",
type: "GET",
error: function (data) {
alert("wystąpił nieokreślony błąd " + data);
},
success: function (data) {
console.log(data);
availableTags = data;
}
})
$("#deviceName").autocomplete({
source: availableTags
});
});
如您所见,我将 dataType
留作智能猜测。
但是成功的 console.log 在控制台中写入了 System.String[]
而不是来自 GetNames
的数据。
谁能建议我如何修改我的代码以获得自动完成功能?
最佳答案
dataType
不适用于 C# 或 MVC 或服务器端,这是告诉 jQuery 您正在使用 json 响应,jQuery 应该解析它。因为你没有提供它,jQuery 不会解析它,因此数据只是一个字符串。如果您需要 json,请提供它或使用 JSON.parse
来解析您的数据字符串。
要么 -
$.ajax({
url: "/DeviceUsage/GetNames",
type: "GET",
dataType: "json",
error: function (data) {
alert("wystąpił nieokreślony błąd " + data);
},
success: function (data) {
console.log(data);
availableTags = data;
}
})
或-
$.ajax({
url: "/DeviceUsage/GetNames",
type: "GET",
error: function (data) {
alert("wystąpił nieokreślony błąd " + data);
},
success: function (data) {
var jsonData = JSON.parse(data);
console.log(jsonData);
availableTags = jsonData;
}
})
而且,您在分配之前不会等待 ajax 完成 -
$("#deviceName").autocomplete({
source: availableTags
});
你应该等待 ajax 完成,所以像这样在 success 中调用这个 -
success: function (data) {
//do proper parsing as mentioned earlier
availableTags = jsonData;
$("#deviceName").autocomplete({
source: availableTags
});
}
因为在调用 availableTags
时没有任何内容。
关于c# - 将数据从 C# 返回到 jQuery UI 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23489254/