我正在使用Selectize.js来标记,这些标记是通过ajax get请求从数据库发出的。
在我的控制器中:
$tags = Tag::where('name', 'like', '%' . $request->get('query'))->pluck('name', 'id');
$prep_tags = [];
foreach ($tags as $key => $value) {
$prep_tags['name'] = $value;
}
return response()->json([
'name' => $prep_tags
]);
Ajax成功:
success: function(res) {
console.log(res.name);
callback(res.name);
}
正确搜索后,Console.log(res.name)显示:
{name: "Jeep"}
Selectize.js JS代码:
$("#new-addTag-selectize").selectize({
valueField: 'name',
labelField: 'name',
searchField: ['name'],
plugins: ['remove_button'],
persist: false,
createOnBlur: true,
create: true,
load: function(query, callback) {
$.ajax({
url: '/get/tags/',
data: { query: query},
dataType: "json",
type: 'GET',
error: function() {
callback();
},
success: function(res) {
callback(res.name);
}
})
}
});
但是自动完成功能不起作用。 我想念什么?
答案 0 :(得分:1)
假设上面代码之外的所有东西都在这里工作,那么您的PHP代码应该是:
$tags = Tag::where('name', 'like', '%' . $request->get('query'))->pluck('name', 'id');
$prep_tags = [];
foreach ($tags as $key => $value) {
$prep_tags[]= ['name' => $value];
}
return response()->json($prep_tags);
这将使$ prep_tags的格式为:
$prep_tags = [
['name' => 'value1'],
['name' => 'value2']
];
那么您的JS成功应该是:
success: function(res) {
callback(res);
}
假设console.log(res)
出现[{"name":"value1"}, {"name":"value2"}]
时,它应该可以工作。