最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - TypeError: Cannot read property 'push' of undefined, JavaScript - Stack Overflow

programmeradmin0浏览0评论

I'm working in this Angular project where user submits a comment form, and the new comment is added to the comments that's already posted. Here is my code.

.controller('productCtrl', function($scope, $http, $routeParams, Page){
$scope.product = {};
$scope.review = {};
$scopements = {};

routeparm = $routeParams.param;

$scope.review = function(){
    var review_box = $scope.review_form.review_box;

    $http.post('./comment.php', {
        comment : review_box,
        code: routeparm
    })

    .success(function(data){
            $scopements.push(dataments);
            $scope.review.review_box = '';
    })

    .error(function(data){
        $scope.has_error = true;
        $scope.error_message = data;
    })

};

However when I try to add a comment I get the following error.

TypeError: Cannot read property 'push' of undefined

I've defined an empty $scopements = {}; so why am I getting this error? And how can I fix it? Thanks

I'm working in this Angular project where user submits a comment form, and the new comment is added to the comments that's already posted. Here is my code.

.controller('productCtrl', function($scope, $http, $routeParams, Page){
$scope.product = {};
$scope.review = {};
$scope.comments = {};

routeparm = $routeParams.param;

$scope.review = function(){
    var review_box = $scope.review_form.review_box;

    $http.post('./comment.php', {
        comment : review_box,
        code: routeparm
    })

    .success(function(data){
            $scope.comments.push(data.comments);
            $scope.review.review_box = '';
    })

    .error(function(data){
        $scope.has_error = true;
        $scope.error_message = data;
    })

};

However when I try to add a comment I get the following error.

TypeError: Cannot read property 'push' of undefined

I've defined an empty $scope.comments = {}; so why am I getting this error? And how can I fix it? Thanks

Share Improve this question edited Apr 9, 2015 at 4:09 rksh asked Apr 9, 2015 at 4:07 rkshrksh 4,05010 gold badges52 silver badges72 bronze badges 2
  • 3 you cannot use push for json object. But this will work $scope.comments = [ ]; if you initialize this as array. – ramamoorthy_villi Commented Apr 9, 2015 at 4:08
  • 1 First of all, why push is being using on an object ? – Vigneswaran Marimuthu Commented Apr 9, 2015 at 4:09
Add a comment  | 

2 Answers 2

Reset to default 10

The comments you have declared is an Object. Just change your declaration to an array ,

From:

$scope.comments = {};

To:

$scope.comments = [];

EDIT: If you need to Push new Object, You need to make your Comments as Array of Object like this and push the new Object

$scope.comments = { 
    1: {name:'',review:'',comment:'',uptime:'',gravatar:''}
}

 $scope.comments.push({name:'rukshi', review:'test comment',comment:'yet another comment',uptime:'',gravatar:''});

You may try this

.controller('productCtrl', function($scope, $http, $routeParams, Page){
  $scope.product = {};
  $scope.review = {};
  $scope.comments = [];

  routeparm = $routeParams.param;

  $scope.review = function(){
  var review_box = $scope.review_form.review_box;

$http.post('./comment.php', {
    comment : review_box,
    code: routeparm
}).success(function(data){
        $scope.comments.push(data.comments);
        $scope.review.review_box = '';
}).error(function(data){
    $scope.has_error = true;
    $scope.error_message = data;
})

};
发布评论

评论列表(0)

  1. 暂无评论