JQuery自动完成结果不会出现

时间:2010-12-14 22:20:36

标签: jquery asp.net-mvc-2 autocomplete

我在ASP.net MVC 2中创建了一个自动填充字段。问题是输入字段只是旋转而没有自动填充数据或“无结果”消息出现。

我有一个Search控制器,它使用LIKE语句从数据库中检索LastNames。该控制器从以下JavaScript函数调用:

 $('#author').autocomplete('~/edit/search.mvc', {
    delay: 200,
    minChars: 2
});

一切正常。我可以调试到搜索控制器,它正在传递搜索文本(q)并将结果一直提取到return语句。控制器在下面。

//Method to return author searches
public JsonResult Search(string q)
{
    var locateFacultyDto = new LocateFacultyMemberDto() { SearchText = q };
    var result = _facultyMemberModel.LocateFacilityMembersByLastNameLike(locateFacultyDto, 10);

    var lastNames = new List<string>();

    foreach (var facultyMember in result.FacultyMembers)
    {
        lastNames.Add(facultyMember.LastName);
    }


    return Json(lastNames, JsonRequestBehavior.AllowGet);
}

但是在HTML(Spark)页面中没有显示任何结果。我有一个非常简单的文本输入:

 <input id="author" type="text" />

有什么想法吗?我无法进行任何比搜索控制器结束更多的调试,但到目前为止一切似乎都很好。

2 个答案:

答案 0 :(得分:1)

我建议在firefox中使用firebug看看回来的实际响应是什么。

答案 1 :(得分:1)

好的,我想通过以下帖子和上面的评论来解决这个问题:

http://blogs.msdn.com/b/joecar/archive/2009/01/08/autocomplete-with-asp-net-mvc-and-jquery.aspx

发布生成的代码,以防其他人帮助。

Javascript :这会调用“编辑”控制器中的“搜索”方法(详情如下)。添加“Parse”函数是关键,我在上面提供的链接中对此进行了解释:

  

技巧是将此数据转换为自动完成功能所期望的格式。如果您使用的是本地数据,则自动完成需要一个字符串数组。由于我们的数据是JSON对象的形式,我们将使用parse选项将我们的JSON对象格式化为自动完成功能可以使用的数据。

     

解析函数没有很好地记录,但它基本上将采用我们的JSON对象并返回一个由三个必需部分组成的对象数组:

     
      
  1. 数据:这是我的JSON对象中的整个项目:{“ID”:13,“Name”:“test3”,“Count”:1}

  2.   
  3. 值:这是我想要显示的值:test3

  4.   
  5. 结果:在我从下拉列表中选择标记后,这是我想要添加到输入的值(txtStoryTags):test3

  6.   

完整的Javascript功能:

$('#author').autocomplete('~/edit/search.mvc', {
    dataType: 'json',
    parse: function(data) {
      var rows = new Array();
      for (var i = 0; i < data.length; i++) {
        rows[i] = {data: data[i], value: data[i].Name, result: data[i].Id };
     }
      return rows;
  },
  formatItem: function(row) {
     return row.Name;
  },
 delay: 40,
 autofill: true,
 selectFirst: false,
 highlight: false,
 minChars: 2
});

ASP.net MVC 2控制器:

    //Method to return author search results as JSON
    public JsonResult Search(string q) //autocomplete passes a variable 'q' containing the search text
    {
        var locateFacultyDto = new LocateFacultyMemberDto() { SearchText = q };
        var authors = _facultyMemberModel.LocateFacilityMembersByLastNameLike(locateFacultyDto, 10);

        var results = new List<Object>();  //All we need is the name and ID
        //anonymnous object for JSON result.  
        foreach (var author in authors.FacultyMembers)
        {
            results.Add(new
            {
                Name = (author.LastName + ", " + author.FirstNames), 
                Id = author.Id
            });
        }

中提琴!自动填充功能会在搜索结果中列出用户名,并在选择名称时将ID插入到字段中,这只是:

 <input id="author" type="text" />

谢谢大家!