【问题标题】:AngularJS $http(...) errorHandler receives empty string for dataAngularJS $http(...) errorHandler 接收空字符串作为数据
【发布时间】: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 中的成功回调中成功接收。

【问题讨论】:

  • 这只是代码中的错字吗? dataresponse?
  • @EvanTrimboli:是的,已修复。
  • @RJLohan 304 表示不会重传信息。我对此不太精通——但我敢打赌,这是因为您的请求已被缓存。见这里tools.ietf.org/html/rfc7232#section-4.1
  • @Rob:哇,谢谢。原来问题是我选择的 HTTP 状态代码。不知何故,我设法选择了唯一一个不返回数据的!更改此错误代码产生了预期的结果,现在我更好地了解了情况。真希望我在几天的面对面行动之前发布了这个问题......

标签: c# angularjs asp.net-mvc


【解决方案1】:

所以在我的问题上查看了 cmets 之后,事实证明问题是由我选择的 Http 状态码引起的。我回来了

StatusCode = HttpStatusCode.NotModified,

这段代码有特殊含义,“数据”blob 似乎是故意剥离的。

相反,如果我使用像

这样的代码
StatusCode = HttpStatusCode.Unauthorized,

“数据”blob 在 Angular 回调中按预期填充。

此示例返回预期的错误数据;

[System.Web.Http.HttpPost]
public async Task<HttpResponseMessage> Save([FromBody]object data)
{
    ...<snip>...

    return new HttpResponseMessage
    {
        StatusCode = HttpStatusCode.Unauthorized,
        Content = new JsonContent(JObject.FromObject(new
        {
            success = false,
            message = "User not authorised to perform this action."
        }))
    };
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 2021-10-12
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多