[英]Store PHP variable with HTML in JavaScript in Laravel Blade Template
我需要一種方法來存儲JavaScript中PHP變量的HTML。
var contents = "{{ $template }}";
然而,這會產生錯誤。 我想這是因為它沒有正確轉義,所以它弄亂了網絡瀏覽器,因為JS無法正確存儲...我已經嘗試過Laravel轉義
var contents = "{{ e($template) }}";
沒有任何成功。
最終目標是: $('#preview-iframe').contents().find('html').html(contents);
我怎么能做到這一點?
雙花括號{{ }}
將始終將特殊字符轉換為HTML實體。 嘗試使用{!! !!}
{!! !!}
完全呈現代碼。 但是,您需要確保轉義字符串中的雙引號。
所以這:
var contents = "{{ $template }}";
應該是這樣的:
var contents = "{!! addcslashes($template, '"') !!}";
我使用此解決方法來解決同樣的問題
var contents = atob("{{ base64_encode($contents) }}");
這非常方便,因為您不必轉義任何字符,並且您可以保證javascript不會出現任何語法錯誤。
一個缺點是IE10和up- source支持atob()函數
您可以將PHP變量值帶到java腳本中,如下所示
<script>
var jsvariable = <? echo $phpvarialbe ?>;
console.log(jsvariable)
</script>
你可以嘗試var contents = {{$template->toJSON()}};
我遇到了非常相似的問題。 問題是,如果你使用
var contents = "{{ e($template) }}";
在你的javascript中,解析器認為{{e($ template)}}是javascript對象,而不是你的刀片變量。 腳本塊中的括號不被視為刀片變量,而是作為JSON格式的對象。
我的解決方案是,我制作了一個模板並將其包含在像這樣的刀片變量的位置
var contents = '@include("public.default.values.content")';
然后我在文件夾(你的視圖文件夾)/public/default/values/content.blade.php中創建了文件,並在此模板文件中只添加了一行,你的值
{{ e($template) }}
javascript塊內的刀片解析器正確理解了包含。 這樣刀片解析器將正確使用您的包含在JavaScript代碼中,正確轉到內容刀片,獲取值並將其保存在您的javascript變量中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.