You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:48:04