我正在尝试执行Master-Detail Page 我使用$ stateParams.id来提供详细数据。
问题是$ stateParams.id作为数组返回。
这意味着,
如果数据如下:
{id:1,姓名:'James'},{id:2,姓名:'John'}
当 $ stateParams.id为1 时,
然后返回的数据为 ID:2。不是ID:1 ,因为它作为数组返回,并被选为数组[1]。
我认为这是因为PHP将数据作为array()返回。
我不知道在哪里修复:AngularJS还是PHP? (或者我可能错了!) 你会修复哪一个?请告诉我。
[controller.js]
function ProjectCtrl($scope, $http, $timeout, $state, $stateParams, $location) {
$http.post("../crud/projects_read.php", {
})
.then(function(response){
$scope.projects = response.data;
$scope.project_data = $scope.projects[$stateParams.id];
});
};
[config.js]
.state('pjt.project_detail', {
url: "/project_detail/{id}",
templateUrl: 'views/project_detail.html',
data: { pageTitle: 'Project detail' },
controller: 'ProjectCtrl',
})
[projects_read.php]
<?php
require_once 'connect.php';
$query = $conn->query("SELECT * FROM `projects`") or die(mysqli_error());
$data = array();
while($row = $query->fetch_assoc()){
$data[] = $row;
}
}
echo json_encode($data);
?>
我的目标是: $ stateParams.id将数据的id号匹配为字符串,而不是数组。
提前感谢您的支持!
答案 0 :(得分:0)
要确定问题是与AngularJS还是PHP有关,请提供PHP脚本提供的完全响应?
如果PHP脚本将数据作为单个 JSON对象返回为
{id: 1, name:'James'}, {id:2, name:'John'}
而不是
的JSON对象的序列/数组[{id: 1, name:'James'}, {id:2, name:'John'}]
然后你必须在PHP脚本中进行一些更改。
如果我们说这是罪魁祸首,那么错误可能是合理的,但在你提供确切的php响应之前我们不能肯定地说出任何事情。
如果响应是JSON对象的数组,那么错误可能是错误的。
回想一下,为了访问项目ID#2 的数据,我们必须引用索引为1的响应数组,因为javascript数组索引 0-based 强>
因此$scope.projects[1]
将返回{id: 2, name: "John"}
而$scope.projects[0]
将返回'{id: 1, name: "James"}'
如果是这种情况,那么我建议更改PHP脚本,以便您没有获得整个项目列表,只能获得您想要的项目。
您可以通过将项目ID传递给通过AngularJS进行的POST调用中的PHP脚本,然后使用MySQL查询中的id来获取特定的项目详细信息来完成此操作。
希望我帮助过。