Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
sajkee
1 / 1 / 2
Регистрация: 17.06.2012
Сообщений: 36
1

jQuery autocomplete не передает параметры в контроллер MVC3

20.06.2013, 11:41. Просмотров 1681. Ответов 4
Метки нет (Все метки)

Здраствуйте. Прошу вашей помощи.
Пытаюсь прикрутить автозаполнение к текстовому пол в представлении (на aspx страничке) и связать с контроллером.
Но увы, с контроллером связь есть, но ему вместо набранного текста приходит Null.
Передавал и через extraParams и через data.


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            <input type="text" id="UDCCODE" name="UDCCODE" />
            <script type="text/javascript">
                $(function () {
                    $("#UDCCODE").autocomplete(
                    {
                        source: "/Book/UDCAutoComplete",
                        minLenght: 1,
                        data: "beginText=" + $("#UDCCODE").val(),
                        extraParams: { "beginText": $("#UDCCODE").val()},
                        select: function (event, ui) 
                        {
                            if (ui.item) 
                            {
                                $("#udccode").val(ui.item.value);
                            }
                        }
                    });
                });
            </script>
C#
1
2
3
4
5
6
7
        public JsonResult UDCAutoComplete(string beginText)
        {
            DBDataContext db = new DBDataContext();
            var udccodes = from c in db.UDC select c.UDCCODE;
            ...........
            return Json(udccodes, JsonRequestBehavior.AllowGet);
        }

Версии jQuery пробовал разные, от 1.5 до 1.10, брал из примеров. Полагаю, что мне просто не попалась нормальная версия.

В чем может быть проблема?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2013, 11:41
Ответы с готовыми решениями:

DropDownListFor не передает id в контроллер
У меня реализована динамическая загрузка списка по выбору из другого списка. Но данные из второго...

BeginForm не передает параметры
Две формы во вьюхе: @using (Html.BeginForm(&quot;ProductList&quot;, &quot;Product&quot;, FormMethod.Get)) { ...

jquery ui autocomplete
Здравствуйте проблемма с этим плагином. Когда я подключаю массив для использовния его например в...

jQuery autocomplete
Здравствуйте! Хочу сделать поле с раскрывающемся списком с помощью библиотеки jQuery autocomplete....

MVC3 JQuery Ajax передача JSON данных от клиента серверу
Код на клиенте $.ajax({url:'@Url.Action( &quot;Index&quot; )', ...

4
iptables
94 / 87 / 18
Регистрация: 09.06.2012
Сообщений: 215
20.06.2013, 13:36 2
Может быть поможет.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
searchInput.autocomplete({
        source: function (request, response) {
            if (request.term.length < 3) {
                response("");
                return;
            }
            $.getJSON("/search/searcher/"+request.term.trim() , function (data) {
                response(data);
                return;
            });
            response("");
            return;
        }
    });
Контроллер
C#
1
2
3
4
5
6
7
8
public JsonResult Searcher(string id)
        {
            if (string.IsNullOrWhiteSpace(id) || id.Length < 3)
                return Json("", JsonRequestBehavior.AllowGet);
            
            var goodssearch = Search.SimpleList(id).ToList();
            return Json(goodssearch, JsonRequestBehavior.AllowGet);
        }
1
sajkee
1 / 1 / 2
Регистрация: 17.06.2012
Сообщений: 36
21.06.2013, 09:06  [ТС] 3
@iptables, большое спасибо за код. через getjson параметры отправляются (проблема была еще и в маршрутах, название параметра тоже должно быть в них зарегано).
Продвинулся чуть дальше, теперь другая проблема. данные не передаются в autocomplete:

Javascript
1
2
3
4
5
6
7
8
9
10
11
                $(function () {
                    $("#UDCCODE").autocomplete(
                    {
                        source: function (request, response) {
                            $.getJSON("/Book/UDCAutoComplete/" + request.term.trim(), function (data) { response(data); return; });
                            response("");
                            return;
                        },
                        minLenght: 1
                    });
                });
Может в коде есть какой-то очевидный косяк? Как проверить пришел json-результат или нет?

Добавлено через 33 минуты
В общем результат такой (если выполнить код выше):
data - возвращает нормальный набор строк, response(data) - возвращает undefiened.
0
Vasya_Pronin
4 / 4 / 0
Регистрация: 22.06.2013
Сообщений: 19
22.06.2013, 08:27 4
Как-то сложно все у вас. В source можно передавать url по которому возвращается json. Вот простой пример где все работает
Javascript
1
2
3
4
5
$("#youInput").autocomplete({
                source: "@Url.Action("UIAutocomplete")",
                minLength: 2,
                delay: 1000
            });
C#
1
2
3
4
5
6
7
8
9
 
//по умолчанию параметр от autocomplete называется term
public JsonResult UIAutocomplete(string term)
        {
            //деламе что нам нужно возвращаем json
 
            return Json(result, JsonRequestBehavior.AllowGet);
        }
    }
Если что-то не работает, запустите в режиме отладки, поставьте брейкпоинт и гляньте вызывается ли метод контролера. С другой стороны зайдите в браузере по урлу в ручную и посмотрите, что за данные возвращаются контролером. (В моем пример урл что-то вроде localhost:31231:/UIAutocomplete?term=f)
0
sajkee
1 / 1 / 2
Регистрация: 17.06.2012
Сообщений: 36
24.06.2013, 07:10  [ТС] 5
По итогу, как оказалось код работает, просто постоянно стояла точка останова
Итак, чтобы код заработал, необходимо чтобы название параметра, который передается через адресную строку, совпадало с параметром действия в контроллере:
global.asax
C#
1
2
3
4
5
routes.MapRoute(
                "Default", // Имя маршрута
                "{controller}/{action}/{id}", // URL-адрес с параметрами
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Параметры по умолчанию
            );
Контроллер:
C#
1
2
3
4
5
public JsonResult AutoComplete(string id)
        {
            // ...
            return Json(json, JsonRequestBehavior.AllowGet);
        }
0
24.06.2013, 07:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2013, 07:10

execl не передает параметры
//1 execl(&quot;/home/a/os_3/copy_file/bin/Debug/copy_file&quot;, // &quot;copy_file&quot; запускает sendfile(out,in)...

Модуль на jQuery UI autocomplete (remoute source)
Всем привет. Ваяю модуль поиска, собственно, как описано в сабже. Код скрипта из файла...

Как изменить JavaScript в autocomplete jQuery
Подскажите, пожалуйста, как изменить Javascript чтобы данные вытягивать из Mysql &lt;!doctype html&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru