AngularJS - $ http.post以json的形式发送数据

时间:2014-07-03 04:41:26

标签: json angularjs http post

我正在使用angularjs处理autocomplete指令,但遇到了一些问题。

我有一个具有自动填充输入的表单。当我在那里输入内容时,术语变量将作为JSON发送:

enter image description here

但是,当我以另一种形式使用相同的功能(来自不同的角度控制器,但功能相同)时,术语变量发送完美且自动完成工作正常:

enter image description here

这是我的角度函数:

$scope.getCustomers = function (searchString) {
    return $http.post("/customer/data/autocomplete",
        {term: searchString})
        .then(function (response) {
            return response;
        });
};

你认为错在哪里?

3 个答案:

答案 0 :(得分:42)

使用JSON.stringify()来包装你的json

var parameter = JSON.stringify({type:"user", username:user_email, password:user_password});
    $http.post(url, parameter).
    success(function(data, status, headers, config) {
        // this callback will be called asynchronously
        // when the response is available
        console.log(data);
      }).
      error(function(data, status, headers, config) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
      });

答案 1 :(得分:15)

考虑在$ http.post中显式设置标题(我把应用程序/ json,因为我不确定你的例子中哪两个版本是工作的,但你可以使用application / x-www-form -urlencoded如果它是另一个):

$http.post("/customer/data/autocomplete", {term: searchString}, {headers: {'Content-Type': 'application/json'} })
        .then(function (response) {
            return response;
        });

答案 2 :(得分:12)

我认为最合适的方法是在进行" get"时使用相同的代码角度。使用$httpParamSerializer的请求必须将其注入您的控制器,这样您就可以完全执行以下操作而无需使用Jquery,$http.post(url,$httpParamSerializer({param:val}))

app.controller('ctrl',function($scope,$http,$httpParamSerializer){
  $http.post(url,$httpParamSerializer({param:val,secondParam:secondVal}));
}