2017-02-21 18 views
0

Я хотел бы сохранить модель Customer в переменной JS как JSON. Вот подходы я пытался и подводные камни, которые я нашел в каждом из них:Как правильно передавать данные с PHP на JS

  1. {{ $customer }} делает полученный код в <script> выглядеть следующим образом: var customer = {&quot;id&quot;:1, ... &quot;}, неисправного с Uncaught SyntaxError: Unexpected token & ошибки. Кроме того, если переменная null в PHP, то в JS она становится var customer = ;, что нарушает код.

  2. {!! $customer !}} хранит данные правильно var customer = {"id":101, ... }, но она страдает от тех же проблем, как {{ }} выше, когда переменный в PHP null.

  3. работает для коллекции, но не для одного объекта модели - в последнем случае PHP потерпит неудачу, попробовав позвонить toArray() по null. Кроме того, {!! !!} уязвимы для атак XSS.

Тот, который работал для меня, был {!! $customer ?? 'undefined' !!}. Он правильно обрабатывает все случаи, но это непроизвольно и неуверенно. Другим решением является {!! json_encode($customer) !!}, но опять же, он также страдает проблемами безопасности. Интересно, может ли быть упрощено только {{ }}, или, может быть, есть лучший подход.

Спасибо!

+0

Используйте в AJAX запрос, чтобы получить либо один 'customer', доступный через' data.customer.id' или список 'customers', доступный через' for (клиент var в data.customers) {console.log (data.customers [customer] .id); } 'Или, если в файле' .blade.php' есть код '

0

попытки Исеть

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

Ну, если он не установлен, то это будет 'var customer =;', который является синтаксической ошибкой – Alex

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - [Из обзора] (/ review/low-quality-posts/15294859) – xinaiz

+0

@BlackMoses ok, теперь я это знаю, спасибо :)! – GuaHsu