Возможно, ваше действие контроллера вызывает исключение. Давайте рассмотрим следующие действия:
public ActionResult GetPeople(string term)
{
// the term parameter will contain the search string
// TODO: use the term parameter to filter the results from
// your repository. In this example the result is hardcoded
// to verify that the everything works.
return Json(new[]
{
new { id = "1", label = "label 1", value = "value 1" },
new { id = "2", label = "label 2", value = "value 2" },
new { id = "3", label = "label 3", value = "value 3" },
}, JsonRequestBehavior.AllowGet);
}
вещей, чтобы следить за:
- контроллера действия доступно с GET глаголом (
JsonRequestBehavior.AllowGet
)
- Действие контроллера возвращает массив JSON, где каждый элемент имеет свойства идентификатора, метки и значения
- Действие контроллера не генерирует исключения
И потом:
$(function() {
$('#txtMovieSearch').autocomplete({
source: '<%= Url.Action("GetPeople") %>',
minLength: 3,
select: function (evt, ui) {
console.log(ui);
}
});
});
И, наконец, использовать FireBug проанализировать, что именно передается на сервер в качестве запроса AJAX и ответ от сервера.
Вы были правы! Он работал с более простым возвратом JSON. Мой контроллер возвращает словарь, существует ли проблема с сериализацией его в JSON? –
Dofs
Посмотрите на мой пример. Не будет проблем с сериализацией словаря, но для плагина возникнут проблемы с пониманием ответа. Его нужно отформатировать, как в моем примере. Таким образом, использование простого метода расширений '.Select()' в вашем словаре позволит вам достичь желаемого результата: 'return Json (dico.Select (x => new {id = x.Key, label = x.Value, value = x.Value}), JsonRequestBehavior.AllowGet); ' –
Большое спасибо за вашу помощь! – Dofs