繁体   English   中英

Ajax总是成功使用Asp.Net HttpResponseMessage执行错误功能

[英]Ajax always executes error function on success with Asp.Net HttpResponseMessage

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

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)代替。

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

选择以下选项之一:

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

要么:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM