javascript - Laravel selectize.js 结果未显示

标签 javascript jquery laravel select selectize.js

我正在使用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/

相关文章:

jquery - 使用 JQuery 选择表行并选中复选框

javascript - 如何根据下拉列表中选择的数字多次执行相同的操作?

laravel、sail shell 和sail artisan 命令停止工作

javascript - 网格系统不工作|自举

jquery - 如何隐藏屏幕尺寸的元素?

javascript - AngularJS - ng-include ng-controller 和范围不绑定(bind)

php - Controller 方法未被调用 Laravel

php - 拉维尔 4 : Count relationship within whereHas

javascript - div不在同一高度

javascript - 使用带有 Node 的简单 js 提示到 Electron 应用程序