如何在POST请求中将String从AngularJS传递给Http Servlet?

时间:2014-09-17 18:19:23

标签: angularjs servlets

这是我的Angular Code(获取请求工作正常但不是Post请求。我在Servlet端的carrier_id中收到null)。

app.js

var app = angular.module( "admin" , []);


app.config(function ($httpProvider){
    // set the Content-Type header globally
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

// define ajax call behavior globally
// set up global transformRequest function
$httpProvider.defaults.transformRequest = function(data){

    if (data === undefined) {
        return data;
    }
    return $.param(data);
};})

app.controller('mainController', function($scope, $http, $window){

$scope.fileList =[];
$scope.selectedFile = null;
$http({
    method: 'GET',
    url :'hrp/filelist' 
}).success( function(data,status,headers,config){ 
    data.file_list.splice(0, 1) // to remove header row
    $scope.fileList=data.file_list

}).error(function(){
    alert("error")
})
$scope.submitFile = function(selectedFile){
    console.log("happy" + selectedFile);
    $http({
        method: 'POST',
        url: 'hrp/carrierInfo',
        data: {carrier_id: selectedFile}
    }).success(function(data){
        alert(data.carrier_id + " & " + data.method_name)
    }).error(function(){
        alert("errors")
    })
}});

Servlet代码的一部分:

String carrier_id = (String)request.getAttribute("carrier_id");

response.setContentType("application/json");

但它是空的。

1 个答案:

答案 0 :(得分:1)

您可能需要设置内容类型:

尝试使用form-urlencoded

$http({
    method: 'POST',
    url: 'hrp/carrierInfo',
    data: {carrier_id: selectedFile},
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
}).then(function(result) {
       console.log(result);
   }, function(error) {
       console.log(error);
   });

并尝试application / json

$http({
    method: 'POST',
    url: 'hrp/carrierInfo',
    data: {carrier_id: selectedFile},
    headers: {
        'Content-Type': 'application/json'
    }
}).then(function(result) {
       console.log(result);
   }, function(error) {
       console.log(error);
   });

查看服务器是否获得不同的结果