如何将PHP多维数组反序列化并传递至Angular.js?
问题:PHP多维数组反序列化后传递给Angular.js
先看你提供的PHP代码片段:
// library.php public function Read() { $query = $this->db->prepare("select idMensaje, Titulo, DATE_FORMAT(FInicioPub, '%d/%m/%Y') as Inicia, DATE_FORMAT(FFinPub, '%d/%m/%Y') as Termina, Hora, Lugar, Observacion FROM EventosRegion where IdRegion = 1 order by FInicioPub"); $query->execute(); $data = array(); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { $data[] = $row; } // 你这里应该是打算把数据传给前端,但没写完对吧? }
其实不用纠结“反序列化”的问题,前后端交互最常用的是JSON格式,PHP和Angular.js对JSON的支持都很好,直接这么做就行:
第一步:PHP端返回JSON格式数据
在你的Read方法末尾,添加以下代码,把查询到的多维数组转成JSON输出:
// 设置响应头为JSON格式,告诉前端这是JSON数据 header('Content-Type: application/json'); // 把数组转为JSON字符串并输出 echo json_encode($data); // 输出后终止脚本,避免输出其他无关内容 exit;
第二步:Angular.js端获取并使用数据
在Angular的控制器(或者服务)里,用$http发起请求获取数据,Angular会自动把返回的JSON解析成JavaScript数组/对象,直接就能用:
angular.module('myApp', []) .controller('EventController', function($http) { var vm = this; // 假设你的library.php通过action参数触发Read方法,根据你的实际路由调整路径 $http.get('library.php?action=read') .then(function(response) { // response.data就是解析后的数组,直接赋值给变量 vm.events = response.data; console.log('获取到的活动数据:', vm.events); }) .catch(function(error) { console.error('加载数据出错了:', error); }); });
第三步:在视图里渲染数据
直接在HTML里用ng-repeat遍历数组就行:
<div ng-app="myApp" ng-controller="EventController as vm"> <div class="event-item" ng-repeat="event in vm.events"> <h3>{{event.Titulo}}</h3> <p>活动时间: {{event.Inicia}} 至 {{event.Termina}}</p> <p>地点: {{event.Lugar}}</p> <p>备注: {{event.Observacion}}</p> </div> </div>
这样一来,PHP的多维数组就以JSON的形式传递给Angular了,全程不需要手动反序列化,两边都能自动处理格式,非常省心~
内容的提问来源于stack exchange,提问作者rdi0r
相关产品推荐
相关产品推荐

