Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS将新数据推送到特定的JSON中_Javascript_Json_Angularjs - Fatal编程技术网

Javascript AngularJS将新数据推送到特定的JSON中

Javascript AngularJS将新数据推送到特定的JSON中,javascript,json,angularjs,Javascript,Json,Angularjs,我有一个JSON输出,如下所示: [{"id":"121","title":"Blog Title","content":"Blog content"}, "comments":[{"id":"12","content":"This is the comment."}]] 我正在通过角度控制器检索阵列: app.controller('BlogController', function($scope, $http) { var blog = this; blog.posts =

我有一个JSON输出,如下所示:

[{"id":"121","title":"Blog Title","content":"Blog content"}, "comments":[{"id":"12","content":"This is the comment."}]]
我正在通过角度控制器检索阵列:

app.controller('BlogController', function($scope, $http) {
    var blog = this;
    blog.posts = [];

    $http.get('/process/getPost.php').success(function (data) {
        blog.posts=data;
    });

    $scope.submitComment = function() {

        blog.posts.concat($scope.formData);

        $http({
            method  : 'POST',
            url     : '/process/insertComment.php',
            data    : $.param($scope.formData),  // pass in data as strings
            headers: {'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'}
        })
        .success(function(data) {
            console.log(data);
            $scope.formData.comment="";
        });
    };
})
然后在my index.html文件中显示信息:

<div ng-controller="BlogController as blog" ng-cloak class='ng-cloak'>
    <div ng-repeat="post in posts">
        <div>{{post.title}}</div>
        <div>{{post.content}}</div>
    </div>
    <div ng-repeat="comment in post.comments">
        {{comment.content}}
    </div>
    <form name="commentform" ng-init="formData.id=post.id" novalidate>
        <textarea ng-model="formData.comment" name="comment" required></textarea><br>
        <input type="submit" ng-disabled="commentform.$invalid" value="Submit" ng-click="submitComment()">
    </form>
</div>
一切正常,但我一直在尝试将submitComment update comment.content放在JSON数组中,其中blog id等于post.id,comment id等于comment.id

我试过做blog.post.comment.push$scope.formData,但没有成功。知道它为什么不工作以及如何修复吗?

你的行blog.posts.concat$scope.formData;没有被分配到任何地方。请注意,.concat与.sort的不同之处在于您正在创建一个新数组

From:concat方法返回一个新数组,该数组由该数组与其他数组和/或值组成

尝试将行更改为blog.posts=blog.posts.concat$scope.formData

编辑:

我猜您的数据格式更可能需要更改:

var post = blog.posts[blogPostId]; // you'll need to determine blogPostId
post.comments = post.comments.concat($scope.formData);
那可能对你有帮助


这不是有效的JSON:SCan你可以澄清这个问题吗?嗨,因为帖子是帖子的数组,你需要更具体地说明你想添加哪一篇帖子,并且@PixnBits提到你的JSON也是无效的。你能解释为什么它无效吗?粘贴到:这让我找到了我的答案。我最终需要将formData传递到submitComment,然后将formData添加到变量函数中,并使用它清除数据。
  $scope.submitComment = function(post) {



    $http.post('/process/insertComment.php', post.formData)
        .then(function(data) {
            console.log(data);
            $scope.formData.comment="";
        }, function(){

          alert("Can't post");

        }).then(function(){

      //finally as we know that post would work in that case
      //find last comment id
          var newCommentId = post.comments[post.comments.length-1].id +1;
      //create new comment obj
      var newComment = {
          id:newCommentId,
          content:post.formData.comment
            };
      //push comment in comments array
       post.comments.push(newComment);

      //clean form
       post.formData.comment="";


    });


    };