将查询结果传递给ajax回调

时间:2017-01-17 18:08:43

标签: c# jquery ajax asp.net-mvc entity-framework

我正在进行实时搜索,用户在文本框中键入内容,然后通过ajax结果获取并添加到ul中,在这种特定情况下,我正在查找用户名,因此如果用户名是{{1然后johnny然后jo中的用户类型会出现,依此类推。

我有ajax js代码,post方法和用户列表模型视图,我现在正在尝试返回列表,但似乎没有工作。

我的js:

johnny

LiveSearch视图模型

$("input#searchtext").keyup(function (e) {

    var searchVal = $("input#searchtext").val();

    var url = "/profile/LiveSearch";

    $.post(url, { searchVal: searchVal }, function (data) {
console.log(data);
    });

});

帖子方法

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; }
    }

所以基本上我想返回一个包含特定字符串的列的列表(或其他内容),并通过ajax回调将所有结果传递给javascript。

2 个答案:

答案 0 :(得分:1)

要将结果作为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);
}

答案 1 :(得分:0)

你可以这样使用。我们的想法是使用成功功能

   $.ajax({
url : ""/profile/LiveSearch"",
type: "POST",
data : searchVal ,
success: function(data)
{
    //data - response from server
},
error: function ()
{

}
});

并从Post方法返回JsonResult