PHP拼接的数组字符串传递到JS后无法识别为数组如何解决
问题解决方法
问题根因
你代码中的$objectresult是手动拼接的字符串类型,并非PHP原生的数组结构,所以被存入$usuarios数组后,json_encode只会将其作为普通字符串序列化,传到前端后自然只能打印出字符串,无法直接访问内部字段。
修正方案
直接把$objectresult定义为PHP关联数组,不要手动拼接字符串格式:
修正后的PHP代码
// 先初始化目标数组,避免未定义报错 $usuarios = []; foreach($datas as $data) { $currentusername = $data['username']; $currentpassword = $data['password']; $currentage = $data['age']; // 直接定义为PHP关联数组,不要拼接字符串 $objectresult = [ 'Username' => $currentusername, 'Password' => $currentpassword, 'Age' => $currentage ]; // 如果需要打印调试可以用print_r print_r($objectresult); echo "<br/>"; array_push($usuarios, $objectresult); }
前端JS代码调整(仅修改了语义不清晰的变量名,逻辑可复用原有写法)
<script language="JavaScript"> // 这里拿到的就是标准JS对象数组 var userList = <?php echo json_encode($usuarios) ?>; for(let i = 0; i < userList.length; i++) { // 可以直接访问对应属性 console.log(userList[i].Username, userList[i].Password, userList[i].Age); } </script>
额外注意
不要尝试在前端用eval解析你之前拼接的字符串来转成数组,这种方式存在注入风险,且语法兼容性很差,后端直接传递标准结构化数据是唯一合理的方案。
内容的提问来源于stack exchange,提问作者WebDev001
相关产品推荐
相关产品推荐

