[英]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.