我有一个简单的应用程序,它将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] ]
有效载荷的屏幕截图:
答案 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 ;
});
}