为什么自动完成jqueryUI不显示结果?

时间:2016-03-31 06:52:51

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

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

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

enter image description here

2 个答案:

答案 0 :(得分:1)

根据documentation或设置函数,你应该传递一个数组来自动编译source。您可以在服务器端更改数据,也可以仅在客户端选择阵列。

在您的情况下更改服务器端更容易,更清洁。回应应该是这样的:

[ "Choice1", "Choice2" ]

不会

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

答案 1 :(得分:0)

根据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 );
        });
    }
});