我将从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;
我得到的错误是:
答案 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
已经定义,这就是为什么你可以动态添加任何内容的原因。如果比这更深,你需要先定义你的结构。