我使用AngularJs实现了一个请求,但是当我的服务器将badrequest返回给客户端时,错误函数的参数数据为空。
$http({
method: args.method,
url: URL+'/'+args.url,
data: JSON.stringify(args.data),
headers : {
'Content-Type': 'application/json'
},
responseType: 'json'
}).success(function(data, status, headers, config) {
//
}).error(function(data, status, headers, config) {
console.log(data);
console.log(status);
console.log(headers);
console.log(config);
});
但是当我使用jquery请求时它会起作用。
$.ajax({
url: URL+"/"+args.url,
data: JSON.stringify(args.data),
dataType: "json",
contentType: "application/json",
type: args.method})
.done(function (data, textStatus, xhr) {
;
})
.fail(function(xhr, textStatus, thrownError) {
if (xhr.status == 400) {
console.log(xhr.responseText);
}
});
输出Jquery Ajax:
测试
当服务器通过angularJS函数返回badrequest时,如何返回Post方法?
答案 0 :(得分:0)
我可能错了,因为我不知道你的后端结构,但据我记得,AngularJS' $http
服务不将4个参数传递给其中一个回调:它只传递一个。
在$http
上引用Angular的文档:
// Simple GET request example:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
此外,文档继续定义response
对象:
响应对象具有以下属性:
数据 -
{string|Object}
- 使用。转换的响应正文 变换函数。状态 -
{number}
- 响应的HTTP状态代码。标题 -
{function([headerName])}
- 标头获取功能。config -
{Object}
- 用于生成的配置对象 请求。statusText -
{string}
- 响应的HTTP状态文本。
所以,其中一个错误可能是你没有给它正确的回叫;它在vanilla JavaScript中是一个非常微不足道的问题,但我在过去经历过这两个问题:Angular和EmberJS。
尝试并获取要检查的响应的status
后端是否正在返回正确的错误响应代码。如果是,那么Angular中的状态解析引擎就会出现问题。
据我记得,有几个这样的案例,但它们是固定的。最后,尝试使用AngularJS的最新稳定版本,并检查错误是否仍然存在。