【发布时间】:2016-09-22 19:37:30
【问题描述】:
我的 module.blade.php 中有(当前)以下代码:
@section('scripts')
<script type="text/javascript">
createMixin(['{{ $module }}']);
</script>
@endsection
解释:
- $module 是一个变量,它包含一个包含简单 key => 值的 JSON,但也包含 key => 对象。它之前在 Controller 中加载并显示在 Blade.php 中。
例子:
{ "标题":"标题", “名称”:“虚拟”, “文件”:“虚拟”, “布局”:“正常”, “领域”:[ { “名称”:“布拉” } ] }
- 函数 createMixin() 理想情况下会使用 $module 中的选项(已经存在)从 Jade 生成 HTML。
问题是:这确实以错误消息结尾:“htmlentities() 期望参数 1 为字符串,给定数组”
到目前为止完成:我已经尝试了几件事:
@section('scripts')
<script type="text/javascript">
var fields = $.parseJSON("{!! $module !!}");
createMixin(fields);
</script>
@endsection
还有:
@section('scripts')
<script type="text/javascript">
createMixin("{!! JSON.parse($module) !!}");
</script>
@endsection
还有:
@section('scripts')
<script type="text/javascript">
createMixin("{!! json_encode($module) !!}");
</script>
@endsection
还有:
@section('scripts')
<script type="text/javascript">
$(this).createMixin("{{ $module }}");
</script>
@endsection
我在这里查看了几篇帖子(如this one)和其他来源,他们告诉人们使用 php implode 方法或只是简单地使用“{!! !!}”。但这一切都以相同的错误消息告终。
问题:我在这里忽略了什么?我做错了什么?
编辑:
根据我的 Javascript 函数的要求:
//generate one jade mixin
function createMixin(module) {
//first load JSON...
var json = $.parseJSON(loadJSON(module["file"]));
//get options for mixin
var options = json.fields;
//detect jade file
var jadepath = RESOURCES_DIR + "views/jade/" + json.file + "/template.jade";
//check if file exists
$.ajax({
'url': jadepath,
'type': 'HEAD',
'error': function() {},
'success': function () {
var html = renderJade(options, jadepath);
//save html into json
json.html = html;
var tmp = new Blob([html], { type: 'plain/text;charset=utf-8' });
}
});
};
【问题讨论】:
-
你能告诉我,这个方法
createMixin()是做什么的吗?你能告诉我们PHP接收端吗?因为消息"htmlentities() expects parameter 1 to be string, array given"是基于PHP端的。 -
@Qazi 添加了上面的 Javascript。我调用此函数并计划使用生成的 html 更改元素内容。我在这个测试中注释掉了大部分内容;我只有第一行代码,其余的都被注释掉了。
-
您发布的其他每个示例是否都出现相同的错误?看起来第一个应该可以工作。也许仔细检查
$module中的内容?你应该可以简单地说:var fields = {!! $module !!} -
@Tama 不,遗憾的是它不起作用......我完全不知道为什么。即使我只是在 Javascript 文件中执行 console.log 而不写任何其他内容,它也不会接受该变量...
标签: javascript php laravel-5.2