Ajax始终会通过Asp.Net HttpResponseMessage

时间:2018-08-06 22:24:55

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

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

网络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");
}

我是在做错什么,还是为什么它总是执行Error函数?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

就像雅各布所说,之所以会出现此问题,是因为必须有一个响应正文,否则javascript将执行错误功能。

选择以下选项之一:

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

或者:

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