Значки пользовательского интерфейса jQuery, появляющиеся в результатах автозаполнения jQuery - PullRequest
1 голос
/ 17 ноября 2010

Я использую плагин jQuery для автозаполнения (автор Joren Zaefferer из jQuery).

Код BackEnd:

public JsonResult GetCompanyNames()
    {
        return Json(Model.CompanyNames); //returns valid JSon
    }

Соответствующий код JS:

$('#CompanyName').autocomplete(['Suzuki', 'Honda', 'blah']); //This works fine
$('#CompanyName').autocomplete('/Account/Login/GetCompanyNames'); //This renders icons!

При передаче массива Javascript в качестве параметра url / data он работает нормально, как и предполагалось.

Но когда я передал Area/Controller/Action в качестве параметра, он показывает мне пользовательские значки jQuery (да?) Всоответствующее текстовое поле !!?

Да, хотелось бы прикрепить скриншот.Поверьте мне, я все еще не могу поверить своим глазам.

Во время отладки я убедился, что мой метод возвращает действительные JsonResult данные.Я использую с помощью: ASP.NET MVC3, JQuery 1.4.2.Я проверил и обнаружил такое же поведение в Chrome 6.0, IE8 и Firefox 3.5

ОБНОВЛЕНИЕ: значки появляются даже до того, как запрос автозаполнения возвращается с сервера.

1 Ответ

1 голос
/ 17 ноября 2010

Обязательно разрешите запросы GET:

public ActionResult GetCompanyNames()
{
    return Json(Model.CompanyNames, JsonRequestBehavior.AllowGet);
}

Еще один совет: используйте FireBug , чтобы увидеть, что именно происходит между клиентом и сервером, и любые возможные сообщения об ошибках.


ОБНОВЛЕНИЕ:

Проблема заключается в том, что вам нужно вручную проанализировать JSON с помощью функций parse и formatItem, поскольку плагин ожидает, что данные будут отформатированы вособый способ:

$('#CompanyName').autocomplete('/Account/Login/GetCompanyNames', {
    dataType: 'json',
    formatItem: function (data, i, max, value, term) {
        return value;
    },
    parse: function (data) {
        return $.map(data, function (item) {
            return { data: item, value: item, result: item };
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...