将数据从C#返回到jQuery UI自动完成
我想用数据库中的数据填充我的将数据从C#返回到jQuery UI自动完成,c#,jquery,ajax,asp.net-mvc,jquery-ui,C#,Jquery,Ajax,Asp.net Mvc,Jquery Ui,我想用数据库中的数据填充我的自动完成。 因此,我用c#编写了一个从db读取的方法: public string[] GetNames() { var names = unitOfWork.deviceRepository.Get().Select(w=>w.Name); return names.ToArray(); } 这个很好用。所有需要的数据都在名称中 现在,我使用Ajax将这些数据传送到客户端: $(function () { var availableT
自动完成
。
因此,我用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
});
});
如您所见,我将离开数据类型
进行智能猜测。
但是console.log in success在控制台中写入System.String[]
,而不是GetNames
中的数据。
有人能建议我如何修改代码以获得自动完成工作吗?
数据类型不适用于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完成后再分配-
$("#deviceName").autocomplete({
source: availableTags
});
您应该等待ajax完成,所以在success中执行此调用,如下所示-
success: function (data) {
//do proper parsing as mentioned earlier
availableTags = jsonData;
$("#deviceName").autocomplete({
source: availableTags
});
}
因为在调用时,availableTags中没有任何内容。数据类型
不适用于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完成后再分配-
$("#deviceName").autocomplete({
source: availableTags
});
您应该等待ajax完成,所以在success中执行此调用,如下所示-
success: function (data) {
//do proper parsing as mentioned earlier
availableTags = jsonData;
$("#deviceName").autocomplete({
source: availableTags
});
}
因为在调用时,availableTags
中没有任何内容。如果您只是希望返回一个逗号分隔的字符串作为返回值,那么可以更改GetNames
函数以返回字符串,并使用string.Join
函数压缩数组
return String.Join(", ", unitOfWork.deviceRepository.Get().Select(w=>w.Name).ToArray());
但我个人建议使用某种类型的json
值响应,并返回一个字符串数组作为json字符串
(很容易被JavaScript解析)
类似于(使用newtonsoft json.net,未测试以下示例):
如果您只是希望以逗号分隔的字符串作为返回值,则可以将GetNames
函数更改为返回字符串
,并使用字符串.Join
函数对数组进行concat
return String.Join(", ", unitOfWork.deviceRepository.Get().Select(w=>w.Name).ToArray());
但我个人建议使用某种类型的json
值响应,并返回一个字符串数组作为json字符串
(很容易被JavaScript解析)
类似于(使用newtonsoft json.net,未测试以下示例):
将GetNames WEB API调用的返回设置为JSONResult,并在返回之前将字符串数组转换为JSon。Ajax不知道如何处理C#/.Net CLR类。请参阅本教程的工作示例,使GetNames WEB API的返回调用JSONResult,并在返回之前将字符串数组转换为JSon。Ajax不知道如何处理C#/.Net CLR类。请参阅本教程中的工作示例,我试图让它工作,但我能得到的是Cannon将字符串隐式转换为JsonresultThink,您可以显示调用GetNames()的函数
function?我试着让它工作,但我能得到的是Cannon隐式地将字符串转换为JsonresultThink您能在调用GetNames()
函数的地方显示该函数吗?