最近在laravel框架中,前台Blade模版中获取后台传递的json字符串,发现了有"字符,现象如下:
/*后端*/
$x_char = ["2017-10-25","2017-10-24"];
return view(xxx, ['x_char' => json_encode(x_char)]);
/*前端*/
<script>
var x_char = "{{ $x_char }}";
console.log( x_char ); //输出 ["2017-10-25","2017-10-24"]
</script>
很明显,后端接口传递至Balde模版里的json数据,被转义了。而我不需要转义的json字符串。
网上有博文,将这些转义字符,用js正则转回来,但麻烦。
后来看到这篇帖子,才发Blade模版接收变量时,用 {!! $x !!} ,可以让 $x 不会被php函数 htmlspecialchars转义。
原帖:https://segmentfault.com/q/1010000010580668
laravel官网介绍:https://laravel.com/docs/5.4/blade#displaying-data
改造代码如下:
/*前端*/
<script>
var x_char = {!! $x_char !!};//将 "{{ $x_char }}" 改为 {!! $x_char !!} 即可
console.log( x_char ); //输出 ["2017-10-25", "2017-10-24"]
</script>