2017-02-21 73 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