Angularjs Ionic JSON 对象不返回数据

Angularjs Ionic JSON object not returning data

本文关键字:返回 数据 对象 Ionic JSON Angularjs      更新时间:2023-09-26

我正在尝试从Web服务中获取数据,我必须接近第一个是从控制器调用数据,在这里工作是代码

$http({
method: 'POST',
url: 'https://url_json.php',
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset-UTF-8'},
transformRequest: function(obj) {
    var str = [];
    for(var p in obj)
    str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
    return str.join("&");
},
  data: paramsVal
}).then(function(response){
$scope.myData = response.data.PlaceDetailsResponse.results[0].first_name;
console.log('my data',$scope.myData);
});
}

但我想在控制器之间共享数据,所以我读服务是最好的选择,所以在我的服务中.js我有:

.factory('userService', function($http){
return {
    getUsers: function(){
        return $http.post("https://url_json.php",
            {entry : 'carlo' ,
            type:'first_name',
            mySecretCode : 'e8a53543fab6f00ebec85c535e' 
        }).then(function(response){
            users = response;
            return users;
        });
    }
}
})

但是当我使用 var user = userService.getUsers(); 从控制器调用它时,在控制台中返回以下内容:

user is [object Object]

和检查铬中的元素我只看到:

user is Promise {$$state: Object}

同样在 chrome 中,当我向下钻取承诺时,数据值 = "。

任何人都可以看看我的服务,看看我是否做错了什么。

谢谢

.then返回一个承诺。你正在爱上显式承诺构造反模式。

getUsers: function(){
    return $http.post("https://url_json.php",
        {entry : 'carlo' ,
        type:'first_name',
        mySecretCode : 'e8a53543fab6f00ebec85c535e' 
    })
}

以上就是您所需要的。然后,在控制器中:

userService.getUsers()
.then(function(response) {
  $scope.data = response.data; // or whatever
});

我建议查看John Papa AngularJS风格指南。他有很多关于获取服务数据、在控制器中使用它等的信息。

在您的控制器中,您必须通过解析来自 getUsers 的 promise 返回来分配用户变量,如下所示:

$scope.user = [];
$scope.error ="";
userService.getUsers().then(function(data){
  $scope.user = data
},function(err){
   $scope.error = err; 
});

希望这有帮助。