【问题标题】:Laravel selectize.js result is not showingLaravel selectize.js 结果未显示
【发布时间】:2019-01-02 12:27:24
【问题描述】:

我正在使用Selectize.js 作为标签,它来自 DB 通过 ajax 获取请求。

在我的控制器中:

$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);
  } 
})
}
});

但自动完成功能不起作用。 我错过了什么?

【问题讨论】:

  • 您也可以显示您的选择代码吗?我还看到的一件事是,在您的foreach 中,您在每次迭代中都覆盖了“名称”键。那是你真正想做的吗?
  • @codisfy 问题更新,添加 js 代码,另外我希望结果显示在自动完成中,我不太确定 foreach。
  • 这个callback是在哪里定义的?
  • @codisfy 在 ajax 成功。 callback(res.name)
  • 哦错过了.. 你可以尝试只发送res 到回调吗?而不是 res.name

标签: javascript jquery laravel select selectize.js


【解决方案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"}] 时它应该可以工作。

【讨论】:

    猜你喜欢
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多