Laravel selectize.js结果未显示

时间:2018-07-25 15:49:19

标签: javascript jquery laravel select selectize.js

我正在使用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);
  } 
})
}
});

但是自动完成功能不起作用。 我想念什么?

1 个答案:

答案 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"}]时,它应该可以工作。