-1

我正在尝试在 jQuery 自动完成中获取所有用户名,但它似乎根本不起作用。

控制器-

  public ActionResult Allusers(string Email) {
            if (ModelState.IsValid) {
               var allUser = (from us in db.SystemUsers
                           select new UserModel
                {
                Email=us.Email,
                UserId=us.UserId
                }).Distinct().ToArray();

                //   ViewBag.Team = allUser.OrderBy(x => x.Text);
                return Json(allUser,JsonRequestBehavior.AllowGet);
            }
            return View();
        }

脚本-

<script type="text/javascript">
    $(function () {
        $("input #autocomplete").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '/AllUsers/AllUsers/',
                    type: "POST",
                    dataType: "json"

                });
            }
        });
    });
</script>

遵循我正在使用的脚本-

<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>

但没有运气。

4

3 回答 3

0

您需要定义成功函数并填写响应 参数

参考JQuery自动完成远程json

于 2013-08-23T12:36:35.057 回答
0

尝试如下

<script type="text/javascript">
$(function () {
    var itemList = [];
    $("input #autocomplete").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '/AllUsers/AllUsers/',
                type: "POST",
                dataType: "json",
                Sucess: function(result) {
                    $.each(result, function (index, item) {
                         itemList.push({ label: item.Email, value: item.UserId});
                    });
                }
            });
        response(itemList);
        }
    });
});

于 2013-08-29T15:59:18.653 回答
0

我也被困在这但是下面为我工作。就我而言,我的 json 结果是字符串数组,因此返回的数据没有列。

如果您使用 .cshtml 而不是 html,则必须在 bundle config 中添加/注册 javascript 和 css 文件 在共享或相应的 cshtml 文件中呈现所需的文件。

之后在您的 cshtml 文件中添加以下行:

<input type='text' id='stockName'/>

以下部分非常棘手且重要:

 $(function () {
        $('#stockName').autocomplete({
            source: function (request, response) {
                $.getJSON("/EquityList/GetStockNames?term=" + request.term, function (data) {
                                            var realArray = $.makeArray(data)

                    response($.map(realArray, function (item) {
                        return {
                            value: item,
                            id: item
                        }
                    }))

                });
            },
            minLength: 3,
            delay: 0
        });
});

重要提示:1)我们需要先将 json 数据格式化为数组 2)然后我们需要使用 map 函数,这很好地将数据格式化为自动完成所需的格式。除非此数据格式未完成,否则不会显示建议对话框 UI。

希望这可以帮助其他开发人员。

于 2015-12-28T13:50:22.307 回答