2012-01-05 45 views
0

我正在使用jQuery UI自动完成插件在我的ASP.NET Web应用程序中获得更好的数据输入。使用jQuery自动完成从数据库检索搜索数据?

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

不过,我觉得我在这个插件莫名其妙地丢失。 我想问我应该怎么做才能使用这个自动完成功能从数据库检索数据?

我希望Ajax应该用于实时搜索, 但我不知道如何在上面的网站上查看演示后才能做到这一点。

非常感谢。

更新:

这里是我试过的代码,不工作,但萤火没有错误了。

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

你试过什么吗? – Robert 2012-01-05 01:56:27

+0

是的。我曾尝试过,但对我来说仍然没有运气。 我想我已经搞砸了,或者干脆误解了这个概念...... 请注意我上面的编辑。 – Hei 2012-01-05 02:02:44

回答

1

你需要创建一个执行查找并返回结果为JsonResult

例如动作

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

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

感谢您的建议。 原来,控制器方法是这个问题的来源, 我在方法中实现了一些错误,所以自动完成崩溃。 – Hei 2012-01-06 01:11:10

1

我不确定这是否可以解决您的所有问题,但您可以编辑几个编辑。

  1. ,因为你正在使用的数据参数为你Ajax请求,你不需要“?名字=” URL的一部分。

  2. 而不是用$('#FirstName')。val()获取您的搜索词,尝试使用请求对象(request.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 
           } 
          })); 
         } 
        }); 
       } 
      }); 
+0

感谢您的建议。 但最后,我发现问题与控制器有关,它只是一个微小的错误,它会导致自动完成功能崩溃....... – Hei 2012-01-06 01:08:11

相关问题