PHP Session数组赋值Vue变量及显示异常问题排查
问题解决:PHP Session数组赋值给Vue变量的正确方式
你的问题出在代码把JSON字符串包裹进了Vue数组的元素里,导致permissions变成了包含JSON字符串的数组,而非直接可使用的对象数组。
错误原因
当前代码:
permissions:['<?php echo json_encode($_SESSION['permissions']) ?>'],
执行后,Vue拿到的是["[{...}]"]这种结构——外层是数组,里面唯一元素是JSON格式的字符串,所以this.permissions[0][0]只会取到字符串的第一个字符[,自然没法访问对象属性。
正确写法
方案1:直接赋值解析后的对象数组(推荐)
去掉外层数组包裹,让json_encode输出的JSON直接作为Vue变量的值:
permissions: <?php echo json_encode($_SESSION['permissions']) ?>,
json_encode($_SESSION['permissions'])会输出合法的JSON数组(比如[{"id_grupy":"4",...}, {...}]),Vue会自动将其解析为JavaScript对象数组。此时直接用this.permissions[0].uprawnienia就能拿到对应字段值。
方案2:保留数组包裹,手动解析JSON
如果业务逻辑必须保留外层数组,需要用JSON.parse解析内部的JSON字符串:
permissions: [JSON.parse('<?php echo json_encode($_SESSION['permissions']) ?>')],
此时this.permissions[0]就是解析后的对象数组,可通过this.permissions[0][0].uprawnienia访问目标字段。
验证
用方案1后,执行console.log(this.permissions),会输出和PHP中var_dump($_SESSION['permissions'])结构一致的JavaScript对象数组,即可正常操作内部字段。
内容的提问来源于stack exchange,提问作者SEO fKings
相关产品推荐
相关产品推荐

