代码之家  ›  专栏  ›  技术社区  ›  Andy

使用laravel 5.6blade将php数组作为json字符串或json对象发送到js前端

  •  2
  • Andy  · 技术社区  · 6 年前

    我正在努力寻找将php数组作为json发送的最佳方法 使用laravel 5.6blade将字符串或json对象转换为前端javascript 模板。

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

     @php $vueModel = [ ...] @endPhp
    
      <script>
          sessionStorage.setItem('vueModel', {!! json_encode($vueModel) !!} );
          ...
      </script>
    

    它显示为 [对象对象] 在chrome开发工具中。

    因此,在此之后,如果我尝试执行以下操作,它将不起作用(将有错误):

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

    但如果我做下面的把戏,它就会吐出绳子。

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

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

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

    那么,将php数组作为一个json对象发送的干净方法是什么? 或者使用laravel 5.6blade模板语言对前端javascript不进行任何编码的json字符串?是什么 在这种情况下推荐的方法?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Andy    6 年前

    找到了一种似乎是拉维尔5.6叶片发动机推荐的方法:

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

    使用 @杰森 blade指令是转换php的一种方便的方法 数组到前端的JSON对象。

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

    让vmodel=json.parse(…php的json字符串表示 阵列)!

    这样就可以在js前端获得一个干净的js on对象,而不用担心编码问题。