在Selectize中为下拉建议远程加载数据
我有一个文本输入,我已选择作为标签工作正常。 我可以创建新项目并正确显示它们。
我想在下拉菜单中远程加载数据,以便像谷歌一样提出建议。 我按照文档进行了操作,但是ajax返回的json没有显示在下拉列表中。 ajax调用成功,因为我的控制台显示返回的json:
["New York", "New Jersey", "New Mexico", "New Hampshire"]
下拉列表中只有:“添加新… ”。
这是我的代码选择:
$(function() { $('.offerInput').selectize ({ delimiter: '♥', plugins: ['remove_button'], valueField: 'value', labelField: 'value', searchField: 'value', openOnFocus: true, options: [], create: function(input) { return { value: input, text: input } }, render: { option: function (item, escape) { console.log(item); return '' + escape(item.value) + ''; } }, load: function (query, callback) { if (!query.length) return callback(); $.ajax({ url: '/as/' + query, type: 'GET', dataType: 'json', error: function () { callback(); }, success: function (res) { console.log(res); callback(res); } }); } }) });
这是我的输入字段:
任何想法都错了吗? 谢谢你的帮助!
您的服务返回的问题["New York", "New Jersey", "New Mexico", "New Hampshire"]
但是你的render
函数正在搜索一个value
属性:
render: { option: function (item, escape) { console.log(item); return '' + escape(item.value) + ''; } }
您应该将服务更改为返回值:
[{"value":"New York"},{"value":"New Jersey"},{"value":"New Mexico"},{"value":"New Hampshire"}]
或者更改渲染以使用该项:
return '
' + escape(item) + '
';