2017-02-21 117 views
0

我想将一个Customer模型作为JSON存储在JS变量中。下面是我试过的方法和我在他们每个人的发现的陷阱:如何正确地将数据从PHP传递到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会尝试在空值上调用toArray()而失败。此外,{!! !!}容易受到XSS攻击。

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

谢谢!

+0

使用一个Ajax请求得到一个单一的'customer',通过'data.customer.id'或访问可以通过for(var data.customers中的var customer){console.log(data.customers [customer] .id)来访问客户列表。 ''或者,如果在'.blade.php'文件中有'

0

尝试isset

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

那么,如果它没有设置,那么它会是'VAR客户=;'这是一个语法错误 – Alex

+0

这并没有提供一个问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/15294859) – xinaiz

+0

@BlackMoses好了,现在我知道了,谢谢:)! – GuaHsu