C# 将查询结果传递给ajax回调
我正在进行一个实时搜索,用户在文本框中键入一些内容,然后通过ajax获取结果并添加到ul,在这个特定的例子中,我正在查找用户名,因此如果用户名是johnny,用户在jo中键入,那么johnny应该出现,依此类推 我有ajax js代码、一个post方法和一个用户列表模型视图,我现在正试图返回列表,但似乎不起作用 我的js:C# 将查询结果传递给ajax回调,c#,jquery,ajax,asp.net-mvc,entity-framework,C#,Jquery,Ajax,Asp.net Mvc,Entity Framework,我正在进行一个实时搜索,用户在文本框中键入一些内容,然后通过ajax获取结果并添加到ul,在这个特定的例子中,我正在查找用户名,因此如果用户名是johnny,用户在jo中键入,那么johnny应该出现,依此类推 我有ajax js代码、一个post方法和一个用户列表模型视图,我现在正试图返回列表,但似乎不起作用 我的js: $("input#searchtext").keyup(function (e) { var searchVal = $("input#searchtext").v
$("input#searchtext").keyup(function (e) {
var searchVal = $("input#searchtext").val();
var url = "/profile/LiveSearch";
$.post(url, { searchVal: searchVal }, function (data) {
console.log(data);
});
});
LiveSearch视图模型
public class LiveSearchUserVM
{
public LiveSearchUserVM()
{
}
public LiveSearchUserVM(UserDTO row)
{
FirstName = row.FirstName;
LastName = row.LastName;
}
public string FirstName { get; set; }
public string LastName { get; set; }
}
post方法
[HttpPost]
public List<string[]> LiveSearch(string searchVal)
{
// Init db
Db db = new Db();
List<LiveSearchUserVM> usernames = db.Users.Where(x => x.Username.Contains(searchVal)).Select(x => new LiveSearchUserVM(x)).ToList();
return usernames;
}
因此,基本上我想返回一个列表或其他包含特定字符串的列,并通过ajax回调将所有结果传递给javascript。您可以这样使用。这个想法是利用成功的功能
$.ajax({
url : ""/profile/LiveSearch"",
type: "POST",
data : searchVal ,
success: function(data)
{
//data - response from server
},
error: function ()
{
}
});
并从Post方法返回JsonResult以JSON形式返回结果。请将您的方法更改为:
[HttpPost]
public JsonResult LiveSearch(string searchVal)
{
// Init db
Db db = new Db();
List<LiveSearchUserVM> usernames = db.Users.Where(x => x.Username.Contains(searchVal)).Select(x => new LiveSearchUserVM(x)).ToList();
return Json(usernames);
}
您可以使用成功回调和来自控制器的json结果检查我的答案,我希望这对签名中的操作返回列表有帮助,但实际上您正在返回列表。您的代码编译成功了吗?所以我首先需要将视图模型列表转换为json,对吗?如果是这样的话,首先怎么做?您也可以发送复杂的对象。对于您的情况,您有字符串,因此也可以返回JsonResult。但首先尝试一下,检查您是否收到了服务器的响应。下一步,您可以看到如何发送列表/复杂对象。我编辑了我的q,它在post方法中有错误的代码,我没有字符串,但结果是视图模型列表。我确实得到了一个成功的回调,问题是如何读取对象列表作为数据回调参数。这应该在返回通用列表时自动完成。NETMVC在将复杂对象转换为json方面做得非常好。它不是自动发生的,我必须事先转换它,但不知道如何转换。