【问题标题】:$stateParams coming in as array, but how to convert in string?$stateParams 以数组形式出现,但如何转换为字符串?
【发布时间】:2017-10-22 22:20:19
【问题描述】:

我正在尝试执行主从页面。
我使用 $stateParams.id 来带来详细的数据。

问题是 $stateParams.id 作为数组返回。

这意味着, 如果数据是这样的:
{id: 1, name:'James'}, {id:2, name:'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 号匹配为字符串,而不是数组。

提前感谢您的支持!

【问题讨论】:

  • 看不到你是如何从 url 获取数组的......真的没有意义
  • 如果您只在页面上显示一个项目,请不要从服务器读取所有您的项目;调用一个采用id 并返回单个对象的API 方法。

标签: angularjs


【解决方案1】:

要确定问题出在 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

所以$scope.projects[1] 将返回{id: 2, name: "John"} 并且$scope.projects[0] 将返回'{id: 1, name: "James"}'

如果是这种情况,那么我建议更改 PHP 脚本,以便 您不会获得完整的项目列表,而只会获得您想要的项目列表

您可以通过将项目 ID 传递给您通过 AngularJS 进行的 POST 调用中的 PHP 脚本,然后使用 MySQL 查询中的 ID 来获取特定的项目详细信息。

希望我能帮上忙。

【讨论】:

  • 感谢您的评论!我得到 [{id: 1, name:'James'}, {id:2, name:'John'}] 而不是 {id: 1, name:'James'}, {id:2, name:'John '}。 $stateParams 如何连接到作为 KEY 的 ID?
猜你喜欢
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 2015-09-04
  • 2014-05-27
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多