【问题标题】:Retrieving search data from database using jQuery autocomplete?使用jQuery自动完成从数据库中检索搜索数据?
【发布时间】:2012-01-05 11:53:15
【问题描述】:

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

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

但是,我想我不知何故迷失了这个插件。 我想问我应该怎么做才能使用这个自动完成功能和从数据库中检索的数据?

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

非常感谢。

更新:

这是我尝试过的代码,不起作用,但在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
                                    }
                                }));
                            }
                        });
                    }
                });

【问题讨论】:

  • 你尝试过什么吗?
  • 是的。我以前尝试过,但对我来说仍然没有运气。我想我要么把事情搞砸了,要么只是误解了这个概念......请注意我上面的编辑。

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


【解决方案1】:

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

例如

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

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

【讨论】:

  • 感谢您的建议。原来控制器方法是这个问题的根源,我在方法中实现了一些错误,所以自动完成崩溃。
【解决方案2】:

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

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

  2. 与其使用 $('#FirstName').val() 获取搜索词,不如尝试使用请求对象 (request.term) 的 term 属性。

例如:

$('#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
                                }
                            }));
                        }
                    });
                }
            });

【讨论】:

  • 感谢您的推荐。但最后我发现问题与控制器有关,只是一个小错误导致自动完成功能崩溃......
猜你喜欢
  • 2016-05-23
  • 2013-04-26
  • 2013-06-21
  • 1970-01-01
  • 2016-08-09
  • 2021-09-26
  • 2021-09-09
  • 1970-01-01
  • 2021-01-21
相关资源
最近更新 更多