2012-01-05 67 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