【问题标题】:How to put array data from laravel to jquery array?如何将数组数据从 laravel 放入 jquery 数组?
【发布时间】:2018-06-12 02:22:28
【问题描述】:

我有一个由$user->roles 生成的集合,其中role 表有role_namepermission 列。

我想要的是获得一个权限数组并在jquery 中使用它,这样我就可以在需要数组的select2 组件中使用它。

<script>
    $( document ).ready(function() {
        $("#role_select").select2();
          $('#role_select').val( {{ $user->roles->pluck('permission') }} ).trigger('change');
    });
</script>

上面的代码不起作用,在控制台显示

[&quot;Super&quot;,&quot;Moderate&quot;]

那么我怎样才能通过删除&amp;quot; 来获得一组权限呢?

【问题讨论】:

  • select2 插件和jquery 部分问题无关?错误出现在 php 中的关系方面...
  • 好吧,你能不能至少 var_dump $user->roles()->permission 让我们看看数据的结构?
  • @rand0m 我已经在控制台显示上面select2 val的内容的问题中指定了它
  • 所以,你有一个数组,读取 ["Super","Moderate"] 并且你希望它出现在你的下拉列表中,是吗?
  • 你不应该mix JS and PHP。将数组放入隐藏输入或 JS 变量中。或者使用包将数据从 Laravel 传递给 JS。

标签: jquery arrays laravel laravel-5 laravel-eloquent


【解决方案1】:

您不希望您的数据被转义:

{!! $user->roles->pluck('permission') !!}

【讨论】:

  • 它有效,但 Laravel 文档说“在显示用户提供的数据时,始终使用转义的双花括号语法来防止 XSS 攻击。”这样安全吗?
  • 对于您的特定用例,这很好。您不是从用户输入中获取角色信息,而是通过 laravel 集合。 IE。来自文档laravel.com/docs/5.5/blade#displaying-data
【解决方案2】:

显示未转义的数据容易受到XSS attack 的攻击,我建议您将数组放在这样的html属性中:

<div style="display:none;" id="permissions" data-permissions="{{ json_encode($user->roles->pluck('permission')) }}"></div>

然后就可以通过.data()方法获取权限数组了:

var permissions = $('#permissions').data('permissions');

【讨论】:

  • thnx 但正如 Leon 所说,即时显示的数据来自数据库,因此根本没有问题。
  • @Raj 这是正确的做法,因为您不应该像以前那样混合使用 PHP 和 JS。
  • @AlexeyMezenin 我使用了 laravel 的 @json() 函数。 var 权限 = @json($user->roles->pluck('permission'));
猜你喜欢
  • 2019-04-24
  • 2015-10-17
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
  • 2018-08-10
相关资源
最近更新 更多