Javascript Ajax总是在Asp.Net HttpResponseMessage成功时执行错误函数

Javascript Ajax总是在Asp.Net HttpResponseMessage成功时执行错误函数,javascript,jquery,asp.net,ajax,asp.net-web-api,Javascript,Jquery,Asp.net,Ajax,Asp.net Web Api,当我发送Ajax请求时,我可以看到返回的状态代码是200,这意味着一切正常。但是,它总是执行error函数而不是success函数 Web Api public HttpResponseMessage ChangeModus(Artikel Artikel) { return Request.CreateResponse(HttpStatusCode.OK); } JavaScript $.ajax({ type: 'POST', dataType: 'json',

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

Web Api

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(OK)响应,但响应不包括响应主体。您应该随响应一起发送内容,或者改用
HttpStatusCode.NoContent
(204)。

发生错误的原因是,尽管您有200(确定)响应,但响应不包括响应正文。您应该随响应一起发送内容,或者改用
HttpStatusCode.NoContent
(204)。

正如Jakob所说,出现问题的原因是必须有响应主体,否则javascript将执行错误函数

选择以下选项之一:

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


正如Jakob所说,出现问题是因为必须有一个响应体,否则javascript将执行错误函数

选择以下选项之一:

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


在错误函数中返回的错误是什么?知道它是哪个错误会有帮助。它不会返回任何错误。错误函数内的响应显示状态代码200。我将附加一个截图@jacob,你的回复是否包括一个主体?我不确定这是否是问题的原因,但您应该使用
204
响应(
HttpStatusCode.NoContent
)在没有响应主体的情况下获得成功。就是这样!!非常感谢。如果我做了这个Request.CreateResponse(HttpStatusCode.OK,“Success”);它是有效的。在错误函数中返回的错误是什么?知道它是哪个错误会有帮助。它不会返回任何错误。错误函数内的响应显示状态代码200。我将附加一个截图@jacob,你的回复是否包括一个主体?我不确定这是否是问题的原因,但您应该使用
204
响应(
HttpStatusCode.NoContent
)在没有响应主体的情况下获得成功。就是这样!!非常感谢。如果我做了这个Request.CreateResponse(HttpStatusCode.OK,“Success”);它起作用了。