在Laravel刀片模板中用JavaScript的HTML存储PHP变量
Store PHP variable with HTML in JavaScript in Laravel Blade Template
我需要一种在JavaScript中存储PHP变量中的HTML的方法。
var contents = "{{ $template }}";
但是,会生成一个错误。我猜这是因为它没有正确转义,所以它搞砸了web浏览器,因为JS不能正确存储它…我试过Laravel escape
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及以上版本支持atob()函数源
您可以将PHP变量值输入java脚本,如下所示
<script>
var jsvariable = <? echo $phpvarialbe ?>;
console.log(jsvariable)
</script>
您可以尝试var contents = {{$template->toJSON()}};
我遇到过非常类似的问题。问题是如果你使用
var contents = "{{ e($template) }}";
在你的javascript中,解析器认为{{e($template)}}是javascript对象,而不是你的blade变量。脚本块中的括号不被视为叶片变量,而是作为JSON格式的对象。
我的解决方案是,我做了一个模板,并将它包含在像这样的叶片变量的地方
var contents = '@include("public.default.values.content")';
然后我在文件夹(你的视图文件夹)/public/default/values/content.刀片.php中创建了一个文件,并在这个模板文件中只添加了一行,你的值
{{ e($template) }}
Include可以被javascript块内的blade解析器正确理解。这样,blade解析器将正确地使用javascript代码中的include,正确地转到content blade,获取值并将其保存在javascript变量中。
相关文章:
- Javascript html每点击一次就会更改url
- 通过javascript/html访问twitter共享iframe
- 使用鼠标悬停JavaScript/HTML显示文本
- JavaScript-HTML表单到JSON(空值)和格式
- 使用javascript html实时预览文本区域输入
- 如何每秒从一个变量中提取一定次数的javascript/html
- 使用变量值作为'名称标识符'javascript/html
- JavaScript HTML Onclick
- 非侵入性Javascript HTML注入
- AppendChild Form / Table [Javascript/Html/PHP]
- 按钮don't使用onClick-Javascript HTML重定向
- 在库(javascript/HTML)中将“name”替换为“id”
- 如何确定使用 javascript/html 单击了哪个对象/图像
- 新的javascript HTML元素不遵循css规则
- JavaScript/HTML 错误的解决方案
- 从图像URL javascript html保存图像文件
- javascript html使用webstorage保存表单
- Javascript+HTML中的日期选择器准备好了吗?(需要:DD、MM、YY的单独字段加上日历选择器)
- 谷歌地图/融合表Javascript HTML赢得't显示/可视化所有多边形数据(通过色标)
- JavaScript/HTML命令行小部件