繁体   English   中英

如何解决此jQuery /咖啡代码的jquery-ui自动完成功能?

[英]How to fix this jQuery/coffeescript code for jquery-ui autocomplete?

嗨,我有类似jquery-ui 1.11的代码:

jQuery ->
  $('#search_terms').autocomplete
    source: (request, response) ->
      $.ajax
        url: '/list.json'
        dataType: "json"
        data: { term: request.term }
        success: (data) ->
          response: $.map(data, (v, i) ->
            label: i
            value: v.toString()
          )

如果我执行console.log $.map(data, (v, i)...我在Firebug控制台窗口中得到以下输出: [Object {label="someX", value="someY"}, Object....]

如何修复$.map代码以获取jquery ui自动完成功能的正确JSON格式?

$.map代码周围添加JSON.stringify产生类似以下内容:

[{"label":"Label1","value":"5"}, ...]似乎应该起作用,但不起作用。 不知道是不是因为我启用了Twitter Bootstrap 3 ...

jQuery自动完成小部件希望您返回要提供给用户的字符串数组 如果希望将值提供给用户,则可以像这样转换数组:

$.map(data, (v, k) ->
  v.toString()
)

或者-似乎更有可能-如果希望将标签提供给用户,则可以像这样转换数组:

$.map(data, (v, k) ->
  k
)

等效于data.keys()

您还必须调用response函数; 我认为您的CoffeeScript返回带有一个键的对象,即response 因此,您的总体CoffeeScript应该遵循以下原则:

jQuery ->
  $('#search_terms').autocomplete
    source: (request, response) ->
      $.ajax
        url: '/list.json'
        dataType: "json"
        data: { term: request.term }
        success: (data) ->
          response data.keys()
        error: response []

(我添加了一个error回调,因为文档指出即使出现错误也必须调用response 。)

最后,您可能可以简化此过程。 如果您修改服务器,以便诸如list.json?term=search类的请求返回一个JSON字符串数组,那么您的自动完成功能可能很简单:

jQuery -> 
  $('#search_terms').autocomplete
    source: "/list.json"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM