angularjs $ http post不发送数据

时间:2016-03-08 17:39:09

标签: javascript angularjs

我对下面的角度代码感到有点沮丧,因为它没有将JSON数据发送到在同一台机器上运行的基于Spring Boot的微服务。请帮帮我!仅供参考,我是JavaScript世界的新手。

$scope.addBook = function() {
    var data = $.param({
        json: JSON.stringify({
            name: $scope.bookName,
            isbn: $scope.isbn,
            author: $scope.authorName,
            pages: $scope.pages
        })
    });

    var config = {
        headers : {
            'Content-Type': 'application/json'
        }
    }

    var result = $http.post('http://localhost:8080/book', data, config);
    result.success(function (data, status, headers, config) {
        $scope.result = JSON.stringify({data: data});
    });
    result.error(function (data, status, header, config) {
        $scope.result = JSON.stringify({data: data});
    });
};

4 个答案:

答案 0 :(得分:2)

您不需要运行JSON.stringify$.param,只需将对象直接传递给$http.post()即可。 Angular为您创建了JSON。

答案 1 :(得分:1)

只需传递您的数据对象:

$scope.addBook = function() {
        var data = 
            {
                name: $scope.bookName,
                isbn: $scope.isbn,
                author: $scope.authorName,
                pages: $scope.page
        };

        var config = {
            headers : {
                'Content-Type': 'application/json'
            }
        }

        var result = $http.post('http://localhost:8080/book', data, config);
        result.success(function (data, status, headers, config) {
            $scope.result = JSON.stringify({data: data});
        });
        result.error(function (data, status, header, config) {
            $scope.result = JSON.stringify({data: data});
        });
    };

您不需要对其进行字符串化。如果您的服务返回JSON,您可能也可以从结果中删除stringify。

答案 2 :(得分:0)

我认为$http不会发送明确的数据。

尝试

$scope.addBook = function() {
    var data = {
            name: $scope.bookName,
            isbn: $scope.isbn,
            author: $scope.authorName,
            pages: $scope.pages
        };

    $http.post('http://localhost:8080/book', data)
        .success(function (data, status, headers, config) {
            $scope.result = JSON.stringify({data: data});
        })
        .result.error(function (data, status, header, config) {
            $scope.result = JSON.stringify({data: data});
        });
};

答案 3 :(得分:0)

将您的数据更改为以下内容。它应该工作

var data = $.param({
                'name': $scope.bookName,
                'isbn': $scope.isbn,
                'author': $scope.authorName,
                'pages': $scope.pages
        });