如何正确地将数据从PHP传递到JS

时间:2017-02-21 15:26:34

标签: laravel laravel-5.3

我希望将Customer模型作为JSON存储在JS变量中。以下是我尝试的方法以及我在每个方法中发现的陷阱:

  1. {{ $customer }}会使<script>中生成的代码如下所示:var customer = {&quot;id&quot;:1, ... &quot;},导致Uncaught SyntaxError: Unexpected token &错误失败。此外,如果PHP中的变量为null,那么在JS中它变为var customer = ;,这会破坏代码。

  2. {!! $customer !}}正确存储数据var customer = {"id":101, ... },但当PHP中的变量为{{ }}时,它会遇到与null相同的问题。

  3. {!! json_encode($customers->toArray()) !!};适用于集合,但不适用于单个模型对象 - 在后一种情况下,PHP会因尝试在null上调用toArray()而失败。此外,{!! !!}容易受到XSS攻击。

  4. 为我工作的是{!! $customer ?? 'undefined' !!}。它可以妥善处理所有情况,但它很笨拙且不安全。另一个解决方案似乎是{!! json_encode($customer) !!},但同样,它也遇到了安全问题。我想知道它是否可以简化为{{ }},或者可能有更好的方法。

    谢谢!

3 个答案:

答案 0 :(得分:0)

那个时候我有点困难,但是我做的唯一一件事(不是更好的方法)就是这个......

我将值分配到数据标签示例

<input type="hidden" data-customer="{{json_encode(custumer)}}">

然后我使用javascript / JQuery访问我脚本中的信息

答案 1 :(得分:0)

尝试isset

@if(isset($custumer)){{ $custumer }}@endif

答案 2 :(得分:0)

我正在使用这个包,它为你带来了魔力:

https://github.com/laracasts/PHP-Vars-To-Js-Transformer

相关问题