我正在使用Selectize.js对于标签,它是通过 ajax get 请求来自数据库的。
在我的 Controller 中:
$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) 显示:
{名称:“吉普车”}
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);
}
})
}
});
但是自动完成功能不起作用。 我缺少什么?
最佳答案
假设除了上面的代码之外的所有东西都在这里工作,你的 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"}]
它应该可以工作。
关于javascript - Laravel selectize.js 结果未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51523066/