【发布时间】:2016-05-02 07:35:28
【问题描述】:
我有一个像这样的简单 AngularJS $http 块;
$http(req).then(function successCallback(response) {
alert(response);
}, function errorCallback(response) {
alert(response);
});
我的问题是,当我的 ASP.NET 控制器返回 HTTP 错误代码时,JS errorCallback 会收到一个类似的对象;
{data: "", status: 304, config: Object, statusText: "Not Modified"}
无论我做什么,我似乎都无法在回调中填充数据属性。
如果我的控制器返回 HTTP OK 代码,则调用“成功”回调,并且返回数据可用。但不是当它是一个错误...帮助!
控制器函数是一个 WebAPI POST 处理程序,看起来像;
[System.Web.Http.HttpPost]
public async Task<HttpResponseMessage> Save([FromBody]object data)
{
...<snip>...
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.NotModified,
Content = new JsonContent(JObject.FromObject(new
{
success = false,
message = "User not authorised to perform this action."
}))
};
}
相同的构造,但带有;
StatusCode = HttpStatusCode.OK
在 JS 中的成功回调中成功接收。
【问题讨论】:
-
这只是代码中的错字吗?
data与response? -
@EvanTrimboli:是的,已修复。
-
@RJLohan
304表示不会重传信息。我对此不太精通——但我敢打赌,这是因为您的请求已被缓存。见这里tools.ietf.org/html/rfc7232#section-4.1 -
@Rob:哇,谢谢。原来问题是我选择的 HTTP 状态代码。不知何故,我设法选择了唯一一个不返回数据的!更改此错误代码产生了预期的结果,现在我更好地了解了情况。真希望我在几天的面对面行动之前发布了这个问题......
标签: c# angularjs asp.net-mvc