使用jQuery自动完成功能从数据库中检索搜索数据?

时间:2012-01-05 01:52:41

标签: html asp.net-mvc-3 jquery-ui autocomplete

我正在使用jQuery UI Autocomplete插件在ASP.NET Web应用程序中更好地输入数据。

http://jqueryui.com/demos/autocomplete/

但是,我想我已经在这个插件中丢失了。 我想问一下,为了将这个自动完成功能与从数据库中检索的数据一起使用,我该怎么办?

我希望Ajax应该用于实时搜索, 但是在看完上面网站上的演示后,我不知道怎么做。

非常感谢。

更新

这是我尝试过的代码,不起作用,但在firebug中也没有错误。

                $('#FirstName').autocomplete({
                    source: function (request, response) {
                        $.ajax({
                            url: "/Contact/FirstNameLookup?firstName=",
                            type: "POST",
                            data: {
                                "firstName": $('#FirstName').val() 
                            },
                            success: function (data) {
                                response($.map(data, function (item) {
                                    return {
                                        label: item.FirstName,
                                        value: item.FistName
                                    }
                                }));
                            }
                        });
                    }
                });

2 个答案:

答案 0 :(得分:2)

您需要创建一个执行查找的操作,并将结果作为JsonResult

返回

e.g。

public ActionResult FirstNameLookup(string firstName)
{
    var contacts = FindContacts(firstname);

    return Json(contacts.ToArray(), JsonRequestBehavior.AllowGet);
}

答案 1 :(得分:1)

我不确定这是否能解决您的所有问题,但您可以进行一些编辑。

  1. 您不需要url的“?firstname =”部分,因为您正在为ajax请求使用data参数。

  2. 而不是使用$('#FirstName')。val()抓取您的搜索字词,请尝试使用请求对象的term属性(request.term)。

  3. 例如:

    $('#FirstName').autocomplete({
                    source: function (request, response) {
                        $.ajax({
                            url: "/Contact/FirstNameLookup",
                            type: "POST",
                            data: {
                                "firstName": request.term 
                            },
                            success: function (data) {
                                response($.map(data, function (item) {
                                    return {
                                        label: item.FirstName,
                                        value: item.FistName
                                    }
                                }));
                            }
                        });
                    }
                });