Select2 autocomplete - 仅在启动时使用Ajax请求呼叫控制器

时间:2015-10-06 09:35:51

标签: javascript ajax asp.net-mvc asp.net-ajax jquery-select2

我在ASP.NET MVC项目的某个字段上获得了一个Select2 4.0.0插件。

HTML:

<select id="MotosAccepteesID" class="form-control" multiple></select>

这是我初始化字段和Ajax查询的方式:(主要来自Select2 4.0.0文档)

$(document).ready(function () {

        var $element = $('#MotosAccepteesID').select2({
            placeholder: 'Taper au moins 2 caractères',
            minimumInputLength: 2
        });

        var $request = $.ajax({
            url: '@Url.Action("ListePartielleMotos", "Motos", null)',
            dataType: 'json',
            quietMillis: 250,
            type: "GET"
        });

        $request.then(function (data) {
            // This assumes that the data comes back as an array of data objects
            // The idea is that you are using the same callback as the old `initSelection`

            for (var d = 0; d < data.length; d++) {
                var item = data[d];

                // Create the DOM option that is pre-selected by default
                var option = new Option(data.text, data.id, true, true);

                // Append it to the select
                $element.append(option);
            }

            // Update the selected options that are displayed
            $element.trigger('change');
        });

    });

这必须在控制器中调用一个动作:

public ActionResult ListePartielleMotos(string q)
    {
        // Breakpoint here, reached only once, at startup
        MotoContext mc = new MotoContext();

        if (String.IsNullOrEmpty(q))
        {
            return null;
        }

        var suggestions = from s in mc.Motos
                          select new
                          {
                              id = s.ID,
                              value = s.Marque.Nom + " " + s.Modele + " (" + s.Cylindree + ")"
                          };
        var motoList = suggestions.ToList().Where(n => n.value.ToLower().Contains(q.ToLower())).Take(20);

        return Json(motoList.Select(m => new
        {
            id = m.id,
            text = m.value
        }), JsonRequestBehavior.AllowGet);

    }

现在问题是:

当我访问网页时,调用控制器(到达我的断点)并带有null参数。确定。

然而,当我在田野里写东西时,没有任何事情发生。我在javascript中看不到任何错误。

有人对此有所了解吗?已经两天了,我快要哭了。

n.b。:我还安装了JQuery UI来测试另一个页面上的anotther字段的自动完成功能,这可能是一个不兼容的问题?

THX!

更新

当我在javascript代码中设置断点时,

var $request = $.ajax({

(使用Chrome),只有在启动时才会达到断点。

我是javascript和JQuery的初学者。也许这段代码不应该在

$(document).ready(function () { });

0 个答案:

没有答案