【发布时间】:2017-05-05 12:50:35
【问题描述】:
我正在用 jquery 学习 web api。
这是我发出帖子请求的插件:
$.postAPI = function (url, data) {
let defer = $.Deferred();
let onSuccess = function (data) {
defer.resolve(data);
};
let onError = function (error) {
defer.reject(error);
};
$.ajax({
url: url,
method: 'POST',
data: data || null
}).done(onSuccess).fail(onError);
return defer;
};
API 控制器:
[Route("api/user")]
public class UserApiController : Controller
{
[HttpPost("{userid?}")]
public IActionResult GetData(string userid)
{
if (!string.IsNullOrEmpty(userid))
{
return Ok(userid);
}
return new StatusCodeResult(401);
// also try with
// return BadRequest();
// return Unauthorized();
}
}
测试:
$.postAPI('/api/user/getdata').done(function (data) {
console.log('success:', data);
}).fail(function (e) { console.log('fail:', e); });
但我一直得到这个日志:
成功:获取数据
我想让请求变成fail。所以,日志可能是:
失败:...
我的问题:我该怎么做?
更新:
我尝试添加这一行(基于评论):
Response.StatusCode = 404;
到方法。但问题并没有解决。
【问题讨论】:
-
如果您的请求失败(或出错),后端必须返回一个错误代码,如 404 或 500,我不确定 jQuery 是否可以模拟这一点。请尝试更改您的后端代码。
-
你需要更改服务器返回的HTTP响应码不是200
-
@AgamBanga 我尝试添加
Response.StatusCode = 404;,但仍然无法正常工作。我仍然得到相同的日志。 -
@foo 你能检查一下网络标签它在标签中显示的状态吗?
-
@silkfire 我用关键字
asp net set response code进行了搜索,但找不到解决方案。我该怎么办?