Je suis un peu frustré par mon code angulaire ci-dessous, car il n'envoie pas les données JSON à mon micro-service basé sur Spring Boot fonctionnant sur la même machine. Sil te plait aide moi! Pour info, je suis un débutant dans le monde 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});
    });
};
2
Rajib Deka 8 mars 2016 à 20:39

4 réponses

Meilleure réponse

Passez simplement votre objet de données comme ceci:

$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});
        });
    };

Vous n'avez pas besoin de le strictifier. Vous pouvez probablement supprimer le stringify du résultat que vous obtenez également si votre service retourne JSON.

1
nweg 8 mars 2016 à 17:47

Je pense que $http n'envoie pas de données stingifiées.

Essayer

$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});
        });
};
0
Matthias 8 mars 2016 à 17:46

Modifiez vos données comme suit. Ça devrait marcher

var data = $.param({
                'name': $scope.bookName,
                'isbn': $scope.isbn,
                'author': $scope.authorName,
                'pages': $scope.pages
        });
0
amanpurohit 8 mars 2016 à 17:46

Vous n'avez pas besoin d'exécuter JSON.stringify ou $.param, passez simplement l'objet directement à $http.post(). Angular crée le JSON pour vous.

2
Prashant 8 mars 2016 à 17:44