我有这段代码
var body="ok";
var suc=0; var failed=0;
$http({
url: API.toUrl('api/xxxx/xxxx'),
method: 'POST',
data: body
}).then(function(response) {
if(response.status==200){
suc=suc+1;
}
if(response.status==400){
failed=failed+1;
}
});
我的问题是我无法获得400状态代码,我只获得200但不是400.如何在response
参数中获得400状态代码。
我在Angular工作,有什么想法获得400?
由于
答案 0 :(得分:0)
400
状态代码将显示为错误,then
接受两个函数作为参数,第一个用于OK响应,第二个用于错误,因此您必须在错误函数上捕获400
。
所以如果你想抓住它,你应该这样做:
var body = "ok";
var suc = 0;
var failed = 0;
$http({
url: API.toUrl('api/xxxx/xxxx'),
method: 'POST',
data: body
}).then(
function(response) {
if (response.status == 200) {
suc = suc + 1;
}
},
function(error) {
//Catch 400 here
}
);
答案 1 :(得分:0)
如果您使用PHP服务器编写api / s / services,请使用以下行手动将400
发送到您的$http
请求
<?php
// Get the current response code and set a new one
var_dump(http_response_code(400));
// Get the new response code
var_dump(http_response_code());
?>
<强> [UPDATE] 强> 您可以在此处查看更多示例以查看如何发送响应代码: PHP: How to send HTTP response code?
答案 2 :(得分:0)
您需要使用其他函数进行错误(400):
var body="ok";
var suc=0; var failed=0;
$http({
url: API.toUrl('api/xxxx/xxxx'),
method: 'POST',
data: body
}).then(function(response) {
alert response.status ;
},function error(response) {
alert response.status ;
});
答案 3 :(得分:0)
来自文档:
200到299之间的响应状态代码被视为成功状态,并将导致调用成功回调。任何超出该范围的响应状态代码都被视为错误状态,并将导致调用错误回调。
- AngularJS $http Service API Reference
var body="ok";
var suc=0; var failed=0;
$http.post(url, data).then(function onSuccess(response) {
if(response.status==200){
suc=suc+1;
};
//return to chain response
return response;
}).catch(function onReject(errorResponse) {
if(errorResponse.status==400){
failed=failed+1;
}
//throw to chain rejection
throw errorResponse;
});
如果从httpPromise链接,请务必在throw
处理程序中使用onReject
语句,以避免转换拒绝成功。