2016-03-08 5 views
1

Я немного расстроен своим нижним угловым кодом, так как он не отправляет данные JSON на мой микро-сервис с пружинной загрузкой, работающий на одном компьютере. Пожалуйста, помогите мне! FYI, я новичок в мире 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}); 
    }); 
}; 
+0

Какая ошибка вы получаете? –

+0

Что вы получаете в своей консоли? где вы получаете ошибку? можете ли вы получить доступ к данным успеха после успешного обратного вызова? –

ответ

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

Вам не нужно stringify его. Вероятно, вы можете удалить форму stringify, которую вы получите, если ваша служба возвращает JSON.

+0

У меня была другая проблема - XMLHttpRequest не может загрузить http://127.0.0.1:8080/book. Ответ на запрос перед полетом не проходит проверку контроля доступа. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Поэтому исходный адрес http: // localhost: 63342 'не допускается. Который я исправил, используя эту ссылку: http://stackoverflow.com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-requested-resource –

2

Вам не нужно запускать JSON.stringify или $.param, просто передать объект непосредственно $http.post(). Угловой создает JSON для вас.

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

Измените данные в следующем. Он должен работать

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