【问题标题】:Why autocomplete of jqueryUI don't display result?为什么 jqueryUI 的自动完成不显示结果?
【发布时间】:2016-07-19 11:28:57
【问题描述】:

我尝试在 mvc 项目中使用 jqueryUI 自动完成。我查看控制台,发现在自动完成的输入中写入字符时,我得到了所有数据,但这些数据没有显示在输入中。如何解决这个问题?

    $('#Departure').autocomplete({
     source: '@Url.Action("GetCityAndAirport", "Flight", "CityAndAirports")'
 });

【问题讨论】:

    标签: asp.net-mvc jquery-ui autocomplete


    【解决方案1】:

    根据http://api.jqueryui.com/autocomplete/#option-source,服务器返回的响应可以是:

    • 字符串数组:[ "Choice1", "Choice2" ]
    • 具有标签和值属性的对象数组:[ { label: "Choice1", value: "value1" }, ... ]

    但看起来服务器正在将数组包装在一个对象中。

    如果服务器可以返回:["Value 1", "Value 2"] 而不是 {"obj": ["Value 1", "Value 2"]},您应该会看到结果。

    编辑: 另一种选择是使用源选项的function 形式并处理响应:

    $('.selector').autocomplete({
        source: function( request, response )  {
            $.getJSON('url', { term: request.term }, function( data ) {
               response( data.obj );
            });
        }
    });
    

    【讨论】:

      【解决方案2】:

      那是因为您应该根据documentation 或设置函数将数组传递给自动编译source。您可以在服务器端更改数据,也可以在客户端仅选择数组。

      在您的情况下更改服务器端更容易、更干净。响应应该是这样的:

      [ "Choice1", "Choice2" ]
      

      不是:

      { obj: [ "Choice1", "Choice2" ]}
      

      【讨论】:

        猜你喜欢
        • 2020-07-28
        • 1970-01-01
        • 2020-01-26
        • 1970-01-01
        • 2013-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多