2016-01-21 73 views
1

我想通過POST方法使用Angular.js發送兩個輸入值,但我無法在URL上傳遞這些值,甚至無法在服務器端捕獲它們。 有人可以幫我解決這個問題嗎?使用POST方法使用Angular.js發送輸入值

對於每個按鈕我需要通過兩個值+按鈕值(operacao)

<form id="form" ng-controller="Controller"> 
    <input id="val1" name="val1" ng-model="val1" placeholder="Valor 1" type="text"> 
    <input id="val2" name="val2" ng-model="val2" placeholder="Valor 2" type="text"> 
    <input id="operacao" name="operacao" type="hidden" value="0"> 
    <input id="soma" type="button" value="soma" ng-click="doClick(val1, val2)"> 
    <input id="sub" type="button" value="sub"> 
    <input id="mult" type="button" value="mult"> 
    <input id="divs" type="button" value="divs"> 
    <input id="resultado" type="text"> 
</form> 

控制器

.controller("Controller", function($scope, operacaoService) { 
    $scope.model = {}; 
    $scope.doClick = function(operacao) { 
    $scope.model.operacao = operacao; 
    operacaoService.postOperacao($scope.model) 
    .success(function(data, status) { 
     $scope.valores = data.result; 
     console.log(data.result); 
    }) 
    .error(function(data, status) { 
     console.log("erro", status); 
    }); 
    }; 
}) 

服務

module.factory('operacaoService', function($http) { 

    var postOperacao = function(model) { 
    return $http({ 
     url: "/operacoes", 
     method: "post", 
     params: model 
    }); 
    }; 

    return { 
    postOperacao: postOperacao 
    }; 
}); 

服務器(Node.js的)

app.post('/operacoes', function(req, res) { 

    var valores = req.query; 
    var val1 = parseInt(valores.val1); 
    var val2 = parseInt(valores.val2); 
    var operacao = (valores.operacao); 
    var result; 

    if (operacao === "soma") { 
    result = val1 + val2; 
    res.send({ 
     result: result, 
     val1: val1, 
     val2: val2, 
     operacao: operacao 
    }); 
    } 
} 

回答

0

根據https://docs.angularjs.org/api/ng/service/ $ HTTP#使用它看起來像你正在使用的配置對象的錯誤屬性設置你的數據有效載荷。 params屬性爲GET請求。

在你的服務,請嘗試編輯$ HTTP調用如下:

module.factory('operacaoService', function($http) { 

    var postOperacao = function(model) { 
    return $http({ 
    url: "/operacoes", 
    method: "post", 
    data: model 
    }); 
    }; 

    return { 
    postOperacao: postOperacao 
    }; 
}); 

此外,在您的服務器端,它看起來像你使用快遞。除了使用

var valores = req.query 

改變它的:

var valores = req.body 

http://expressjs.com/en/api.html#req.body以獲取更多信息

相關問題