【问题标题】:AngularJS http service parameterAngularJS http服务参数
【发布时间】:2016-09-22 07:46:30
【问题描述】:

我有一个包含数组的 json 文件:

{
  "people": [
    {"number":"1", "name":"Gary", "surname":"Peterson", "age":"25"},
    {"number":"2", "name":"Andy", "surname":"Smith", "age":"26"},
    {"number":"3", "name":"Michael", "surname":"Johnson", "age":"28"}
    ]
}

我只想将第一个对象(人员记录)返回到我的应用程序。 当我在 AngularJS 中调用 http 服务并传递参数时,如下所示:

angular.module('mod', [])
.controller('ctrl', function($scope, $http){

  $scope.serviceMethod = function(){
    $http.get("url to database.json", {params: {number: 1}})
    .then(function Succes(response) {$scope.person = response.data.people;});};      

});

它返回所有三个对象。我在控制台(状态 200)中的控制台中没有看到任何错误,并且参数 IS 已传递(它构建了这个 url:http://urltowebsite.com/database.json?number=1)。

我在这里错过了什么?

【问题讨论】:

  • Angular 怎么知道它应该过滤 number 属性??
  • 据我了解,这是服务器端任务,在 angular 内无事可做,或者您可以分配返回的 JSON 的第一个元素,例如 $scope.person = response.data.people[0]

标签: javascript angularjs json http


【解决方案1】:

在您的问题中,您说您有一个包含记录的 JSON 文件(我认为它在服务器端),并且您希望这些记录仅被此 JSON 文件过滤,然后我的回答是 JSON 文件没有功能过滤其记录。

为此,您需要读取此请求的服务器端应用程序

http://urltowebsite.com/database.json?number=1

此服务器端应用程序将访问该 JSON 文件,过滤记录并仅将特定记录返回给 AngularJS。

那么你不需要任何逻辑来过滤AngularJS端的记录。

【讨论】:

    【解决方案2】:

    根据您的要求,您应该使用基于number 属性过滤数据库记录并创建结果的json object 的服务器端语言。

    我正在使用 PHP 来了解功能:

    角度代码:

    angular.module('mod', [])
    .controller('ctrl', function($scope, $http){
    
      $scope.serviceMethod = function(){
        $http.get("getRecord.php", {number: 1})
        .then(function Succes(response) {$scope.person = response;});};      
    
    }); 
    

    getRecord.php:

    <?php
    
    $data = json_decode(file_get_contents("php://input"));
    $number = $data->number;
    
    $con = mysql_connect('localhost', 'root', '');
    mysql_select_db('db_name', $con);
    
    $query = 'select * from table_name WHERE number = 1';
    $query_result = mysql_query($query);
    $res = mysql_fetch_assoc($query_result);
    
    do
    {
      $resultdata[] = $res;
    }while($res = mysql_fetch_assoc($query_result));
    echo json_encode($resultdata);
    
    mysql_close($con);
    ?>
    

    或者,如果您只想要 JSON 中的第一条记录,那么您可以试试这个。

    $scope.person = response.data.people[0];
    

    我希望它会起作用。谢谢。

    【讨论】:

      【解决方案3】:

      您无法使用参数访问 json 文件。您已正确地从 json 中获取数据,因此现在您可以在查看站点上选择要显示的内容。

      【讨论】:

        【解决方案4】:

        如果你只想要第一人称记录,你可以试试这样:

        $scope.person = response.data.people[0];
        

        如果你想在你的服务器上处理这个,你需要你的后端 API 来处理它并且只返回 people 数组的第一个对象。

        【讨论】:

        • 这不是问题的答案。这是一个快速修复。
        • 是的,这需要一些后端修复。
        • 是的,但重点不是每次调用服务时都返回所有数据。如果这样都做不到,那这个参数有什么用呢?
        • 您必须在后端 API 上处理参数。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-01
        • 1970-01-01
        • 2013-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-28
        相关资源
        最近更新 更多