【问题标题】:Ajax always executes error function on success with Asp.Net HttpResponseMessageAjax 总是在使用 Asp.Net HttpResponseMessage 成功时执行错误函数
【发布时间】:2019-01-13 22:22:35
【问题描述】:

当我发送我的 Ajax 请求时,我可以看到返回的状态码是 200,这意味着一切正常。但是,它总是执行错误函数而不是成功函数。

网络接口

public HttpResponseMessage ChangeModus(Artikel Artikel)
{
    return Request.CreateResponse(HttpStatusCode.OK);
}

JavaScript

$.ajax({
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json',
    url: "/Api/Artikel/ChangeModus",
    data: JSON.stringify(Artikel),
    success: OnSaveSuccess,
    error: OnSaveError
});

function OnSaveSuccess(response) {
    alert("Success")
}

function OnSaveError(response) {
    alert("Ein Fehler ist aufgetreten");
}

是我做错了什么还是为什么总是执行错误函数?

【问题讨论】:

  • 您在错误函数中返回的错误是什么?知道它是哪个错误会有所帮助。
  • 它不会返回任何错误。错误函数内的响应显示状态码 200。我将附上截图@Jacob
  • 另外,您的回复是否包含正文?我不确定这是否是问题的原因,但您应该使用 204 响应 (HttpStatusCode.NoContent) 来获得成功,而无需响应正文。
  • 就是这样!!非常感谢。如果我这样做 Request.CreateResponse(HttpStatusCode.OK, "Success");它有效。

标签: javascript jquery asp.net ajax asp.net-web-api


【解决方案1】:

发生错误是因为尽管您有 200(OK)响应,但响应不包含响应正文。您应该使用响应发送内容,或者改用HttpStatusCode.NoContent (204)。

【讨论】:

    【解决方案2】:

    就像 Jakob 说的那样,出现问题是因为必须有响应体,否则 javascript 将执行错误函数。

    选择以下选项之一:

    public HttpResponseMessage ChangeModus(Artikel Artikel)
    {
        return Request.CreateResponse(HttpStatusCode.OK, "Success");
    }
    

    或者:

    public HttpResponseMessage ChangeModus(Artikel Artikel)
    {
        return Request.CreateResponse(HttpStatusCode.NoContent);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      相关资源
      最近更新 更多