Angularjs通过发送数据检索数据问题

时间:2015-08-07 20:44:14

标签: angularjs angularjs-scope angularjs-service angularjs-http

我将从url获取的id发送到服务器(php页面)。

我从url获取并通过{j}中的post方法发送的方式:

注意:我检索数据并在console.log()中打印正常,问题是我想将它们放入 $ scope

.controller('PlaylistCtrl', function($scope, $stateParams, $http) {
    $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
    $http({
        method: 'POST',
        url: 'http://cms.focusweb.ir/Json/get_article',
        data: { id: $stateParams.playlistId },
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    })
    .success(function(response) {
        // This works right
        console.log(response);
        // PROBLEM IS HERE
        angular.forEach(response, function(response){
            $scope.articles_content.push(response);
        });

    })
    .error(function(data, status, headers, config) {
        // handle error things
    });
});

我的PHP代码是:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$article_ID = $request->id;

我得到的错误是:

Error

1 个答案:

答案 0 :(得分:3)

错误基本上是说articles_content不存在(undefined)。因此'push' of undefined

您需要在尝试使用之前定义数组。

$scope.articles_content = []

应该是:

 .controller('PlaylistCtrl', function($scope, $stateParams, $http) {

    $scope.articles_content = []; // Add this in here


    $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
        $http({
            method: 'POST',
            url: 'http://cms.focusweb.ir/Json/get_article',
            data: { id: $stateParams.playlistId },
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        })
        .success(function(response) {
            // This works right
            console.log(response);

            angular.forEach(response, function(response){
              // because you now defined articles_content 
              // as an array, the push() will now work :)
              $scope.articles_content.push(response);
            });

        })
        .error(function(data, status, headers, config) {
            // handle error things
        });
    });

$scope已经定义,这就是为什么你可以动态添加任何内容的原因。如果比这更深,你需要先定义你的结构。