代码之家  ›  专栏  ›  技术社区  ›  user3626232

Jquery自动完成未显示结果“$map未定义”

  •  0
  • user3626232  · 技术社区  · 10 年前

    我正在尝试设置一个jquery自动完成功能,但当我输入文本时,不会出现任何建议。

    该项目是MVC.NET VS2013。

    使用Chrome中的调试器,我可以看到正确的建议正在生成,但不会显示在页面上。在firefox中使用firebug也有相同的结果。

    此外,我还收到一个“$map未定义”错误。看起来这意味着jquery ui没有被加载,但我很困惑,因为我已经尝试将它加载到jquery捆绑包的_layout中,作为它自己的捆绑包的一部分,并直接在视图中引用,但并没有任何效果(jquery ui总是在jquery.js之后引用)。

    在MVC项目中是否有一种特定的方法来引用jquery ui?

    Jquery:

      <p>
    @Html.TextBox("Restaurant")
    <input type="submit" id="Restaurant" value="Submit" />
    </p>
     @section scripts {
    
    <section class="scripts">
    
        <script type="text/javascript">
    $(document).ready(function () {
        $("#Restaurant").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Map/Search",
                    type: "POST",
                    dataType: "json",
                    data: { term: request.term },
                    success: function (data) {
                        response($map(data, function (item) {
    
                            return {
                                label: item.value,
                                value: item.label
    
                                };
                         }
                        ))
    
                    }
                })
            },
            messages: {
                noResults: "", results: ""
            }
        });
    })
    </script>
    </section>
    }
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   chridam Gino Claudi    10 年前

    更改代码的这部分

    response($map(data, function (item) {
    

    response($.map(data, function (item) {
    

    或者可以重构成功回调函数以:

    success: function (data) {
        var items = $.map(data, function (item){
            return {
                label: item.value,
                value: item.label
            };
        });
        response(items);
    }