Я хотел бы сохранить модель Customer
в переменной JS как JSON. Вот подходы я пытался и подводные камни, которые я нашел в каждом из них:Как правильно передавать данные с PHP на JS
{{ $customer }}
делает полученный код в<script>
выглядеть следующим образом:var customer = {"id":1, ... "}
, неисправного сUncaught SyntaxError: Unexpected token &
ошибки. Кроме того, если переменнаяnull
в PHP, то в JS она становитсяvar customer = ;
, что нарушает код.{!! $customer !}}
хранит данные правильноvar customer = {"id":101, ... }
, но она страдает от тех же проблем, как{{ }}
выше, когда переменный в PHPnull
.работает для коллекции, но не для одного объекта модели - в последнем случае PHP потерпит неудачу, попробовав позвонить
toArray()
по null. Кроме того,{!! !!}
уязвимы для атак XSS.
Тот, который работал для меня, был {!! $customer ?? 'undefined' !!}
. Он правильно обрабатывает все случаи, но это непроизвольно и неуверенно. Другим решением является {!! json_encode($customer) !!}
, но опять же, он также страдает проблемами безопасности. Интересно, может ли быть упрощено только {{ }}
, или, может быть, есть лучший подход.
Спасибо!
Используйте в AJAX запрос, чтобы получить либо один 'customer', доступный через' data.customer.id' или список 'customers', доступный через' for (клиент var в data.customers) {console.log (data.customers [customer] .id); } 'Или, если в файле' .blade.php' есть код '
попытки Исеть
источник
2017-02-22 01:31:29 GuaHsu
Ну, если он не установлен, то это будет 'var customer =;', который является синтаксической ошибкой – Alex
Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - [Из обзора] (/ review/low-quality-posts/15294859) – xinaiz
@BlackMoses ok, теперь я это знаю, спасибо :)! – GuaHsu
Я использую этот пакет, который делает чудеса для вас:
https://github.com/laracasts/PHP-Vars-To-Js-Transformer
источник
2017-02-22 12:21:15 d1c1pl3