【问题标题】:Laravel array to json formatLaravel 数组转 json 格式
【发布时间】:2015-04-15 22:46:26
【问题描述】:

所以我正在尝试将 Laravel 数组转换为 json,然后我可以通过 javascript 对其进行操作。我不确定这是如何正确实现的。这是代码,到目前为止

@foreach ($posts as $post)
<div class="row">
   <div class="col-md-8">
     <div class="row">
        <div class="col-md-8 tag">
            <h4><strong><a href="{{{ $post>postName }}}">#{{String::title($posts->postName) }}</a></strong></h4>
        </div>
     </div>
    <!-- ./ post title -->
   </div>    
</div>
<hr />
@endforeach


<script type="text/javascript">
   var data = "{{ ($posts) }}"; // ??
   console.log(data);
</script>

【问题讨论】:

    标签: javascript php html laravel


    【解决方案1】:

    你可以像这样从控制器返回一个 json_encoded 数组:

    public function index()
    {
        $posts = Post::all();
        $json = json_encode($posts);
        return View::make('posts.index', compact('posts', 'json'));
    }
    

    然后您可以根据需要在视图中处理:

    <script type="text/javascript">
        var data = {{ $json }};
        console.log(data);
    </script>
    

    此外,如果您的帖子模型中有敏感字段,您应该在模型类中排除这些字段,以防止它们显示在您的 javascript 检查器中:

    class Post extends \Eloquent {
        ...
    
        protected $hidden = array(
        'id',
        'created_at',
        'updated_at'
        );
    
        ...
    }
    

    【讨论】:

      【解决方案2】:

      如果您正在寻找将普通数组转换为 json 的“高级”方法,您可以使用 laravel 集合。

      collect(['a' => 1, 'b' => 2, 'c' => 3])->toJson();
      

      【讨论】:

        【解决方案3】:

        使用 Eloquents 内置函数 toJson 将您的行获取为 json。

        <script type="text/javascript">
           var data = "{{ $posts->toJson() }}";
           console.log(data);
        </script>
        

        如果您不想包含某些字段,请将该字段添加到模型中的 hidden 属性中,为 Jimmy mentioned

        【讨论】:

        • 这样更简洁,结合模型中的隐藏字段使用。
        【解决方案4】:
        <script type="text/javascript">
           let data = @json($posts);
           console.log(data);
        </script>
        

        【讨论】:

        【解决方案5】:

        你不需要做所有这些,只需使用 php 内置函数 json_encode

        $json = json_encode($posts);
            echo $json;
        
        <script type="text/javascript">
           var data = "$json"; // ??
           console.log(data);
        </script>
        

        【讨论】:

        • 嘿,我试过了,但它只是打印空括号。我需要上面的代码,因为它显示了所有帖子标题,但我还需要对这些相同的帖子进行一些客户端处理。第二个方面是我想不通的
        • json_encode 将确保 json 数据从数组中正确编码,一旦编码,您可以使用 json_decode 函数生成一个 json 对象,该对象可以进一步用于显示特定对象值
        猜你喜欢
        • 2018-03-11
        • 2020-02-22
        • 1970-01-01
        • 1970-01-01
        • 2011-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-29
        相关资源
        最近更新 更多