【问题标题】:Using Laravel 5.6 Blade to send PHP array as JSON string or JSON Object to JS Frontend使用 Laravel 5.6 Blade 将 PHP 数组作为 JSON 字符串或 JSON 对象发送到 JS 前端
【发布时间】:2018-11-10 20:57:57
【问题描述】:

我正在努力寻找将 PHP 数组作为 JSON 发送的最佳方法 使用 Laravel 5.6 Blade 前端 JavaScript 的字符串或 JSON 对象 模板。

似乎当我在 Blade 模板文件中执行以下操作时,它从未将其转换为字符串。

 @php $vueModel = [ ...] @endPhp

  <script>
      sessionStorage.setItem('vueModel', {!! json_encode($vueModel) !!} );
      ...
  </script>

它在 Chrome 开发工具中显示为 [Object Object]

所以在此之后如果我尝试执行以下操作将无法正常工作(会有错误):

 let model = JSON.parse(sessionStorage.getItem('vueModel'));

但是如果我执行以下技巧,那么它会吐出字符串。

请注意 '{!! 周围的单引号... !!}'

<script>
  sessionStorage.setItem('vueModel', '{!! json_encode($vueModel) !!}' );
  ...

但是,这有其自身的问题,因为现在我得到了带有反斜杠编码引号的字符串,然后我将不得不修复它。

那么将 PHP 数组作为 JSON 对象发送的干净方法是什么? 或使用 laravel 5.6 Blade 模板语言对前端 JavaScript 没有任何编码的 JSON 字符串?什么是 在这种情况下推荐的方法?

【问题讨论】:

    标签: php json laravel laravel-5 laravel-5.6


    【解决方案1】:

    找到一种似乎是 Laravel 5.6 Blade 引擎推荐的方法:

    sessionStorage.setItem('vueModel', JSON.stringify(@json($vueModel)));
    

    使用 @json 刀片指令是转换 PHP 的一种不错且方便的方法 前端 JSON 对象的数组。

    然后基本上是为了避免编码问题...在前端您执行以下操作:

    let vModel = JSON.parse( ...PHP 的 JSON 字符串表示 数组)!

    这样你就可以在 JS 前端获得一个干净的 JSON 对象,而不必担心编码问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多