我们可能用到, 在后端用PHP把数据传给前端JS;
但是在TP6中, 视图中的JSON会以实体字符来输出, 在用js进行JSON.parse时会报错; 因为传给js的JSON其实变成了这样
[{"id":2,"group_name":"\u6d4b\u8bd5\u7fa4"},{"id":1,"group_name":"\u6e05\u6cc9\u8bd7\u73ed"}]
可以看到, 双引号一类的东西, 都变成了实体字符, 对js解析造成不便
解决方法是: 不使用模板引擎输出, 而使用原生PHP输出
示例如下
//控制器层
/**页面: 首页 */
public function index()
{
// 查询我的群组
$group = Db::table('group_relationship')
->alias('r')
->join('group g', 'r.group_id = g.id')
->where('user_id', '=', 1)
->field('g.id,g.group_name')
->select()
->toArray();
// 绑定数据至前端
View::assign('group', json_encode($group));
// 调用视图
return View::fetch();
}
<!-- 视图层代码 -->
<script>
let data
// data = JSON.parse('{$group}') # 这么写不行
data = JSON.parse('<?= $group ?>') //这么写可以
console.log(data)
</script>
通过在浏览器查看代码, 我们可以看到视图已经被解析成了这样