Angular 1在帖子上发送空的有效负载

时间:2017-01-16 09:29:11

标签: javascript angularjs ajax

我有一个简单的应用程序,它将json数组发布到我的API。我还有其他一些成功运作的帖子。

当我调查网络流量时,我发现POST在有效负载中发送了一个空数组。

请求发生时变量中有数据,我已多次验证。

请求:

  function postDemo(dp) {
            var x = dp;
            return $q(function (resolve, reject) {
                $http({
                    method: 'POST',
                    url: BASE + 'acl/newDemo',
                    data: x,
                    crossDomain: true,
                    contentType: 'application/json',
                    xhrFields: {
                        withCredentials: true
                    }

                })
                    .success(function (data, status) {

                        resolve(function () {
                            resolve(true);
                        });
                    })
                    .error(function (data, status) {
                        reject(false);
                    });
            });

        }

var x包含数组,并且如前所述填充。问题似乎来自这一点。 API正常工作,并且在不读取数据时是正确的,因为实际上没有发送。

我尝试更改内容类型,这没有什么区别。

该数组来自$ scope并输出一个复杂对象,该对象在发出POST时在x变量中包含所有值。

这是浏览器在发布之前显示的数组值:

  

x = [           billingAddress:对象,           billingDetails:对象,           公司:对象,           importCompany:对象,           importProfile:数组[0]         ]

有效载荷的屏幕截图:

Empty Payload

1 个答案:

答案 0 :(得分:0)

1)$ http已经返回一个承诺,不需要使用$ q她。

2)使用此语法:$ http()。then(sucess(),error()):

https://docs.angularjs.org/api/ng/service/ $ HTTP

function postDemo(dp) {
   return $http({
          method: 'POST',
          url: BASE + 'acl/newDemo',
          data: dp,
          crossDomain: true,
          contentType: 'application/json',
          xhrFields: {
              withCredentials: true
          }

      }).then(function successCallback(response) {
          return true ;
        }, function errorCallback(response) {
           return false ;
        });
}