2012-01-05 2 views
0

Я использую плагин jQuery UI Autocomplete для лучшего ввода данных в моем веб-приложении ASP.NET.Извлечение данных поиска из базы данных с использованием jQuery autocomplete?

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

Однако, я думаю, что я как-то потерял в этом плагине. Я хотел бы спросить, что я должен сделать, чтобы использовать эту функцию автозаполнения с данными, полученными из базы данных?

Я ожидаю, что Ajax следует использовать для поиска в реальном времени, , но я понятия не имею, как это можно сделать, посмотрев демоверсию на веб-сайте выше.

Большое спасибо.

Update:

Вот код, который я попробовал, не работает, но не ошибка в поджигатель тоже.

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

+0

Да. Я уже пробовал, но мне все равно не повезло. Я думаю, что я либо перепутал вещи, либо просто неправильно понял концепцию ... учтите мое редактирование выше. – Hei

ответ

1

Вы должны создать действие, которое выполняет поиск и возвращает результат в виде JsonResult

например

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

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

Спасибо за совет. Оказывается, метод контроллера является источником этой проблемы, Я реализовал что-то не так в методе, чтобы сбой автозаполнения. – Hei

1

Я не уверен, что это решит все ваши проблемы, но вот несколько изменений, которые вы можете сделать.

  1. вам не нужно «? ПгвЬЫат =» часть URL, так как вы используете параметр данных для вас АЯКСА запроса.

  2. вместо того, чтобы захватывать поисковый запрос с помощью $ ('# FirstName'). Val(), попробуйте использовать свойство term объекта запроса (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

Смежные вопросы