如何使用Web API 2来指示成功

本文关键字:指示 成功 API 何使用 Web | 更新日期: 2023-09-27 17:50:15

我正在向服务器发出PATCH请求,以更新标题:

$.ajax({
    url: Settings.get('serverURL') + 'Playlist/UpdateTitle',
    type: 'PATCH',
    dataType: 'json',
    data: {
        id: model.get('id'),
        title: title
    },
    success: function () {
        console.log("Success!");
    },
    error: function (error) {
        console.error("Failure!");
    }
});
[Route("UpdateTitle")]
[HttpPatch]
public IHttpActionResult UpdateTitle(PlaylistDto playlistDto)
{
    using (ITransaction transaction = Session.BeginTransaction())
    {
        PlaylistManager.UpdateTitle(playlistDto.Id, playlistDto.Title);
        transaction.Commit();
    }
    return Ok();
}

一切都很好,除了ajax请求的错误回调被执行,而不是成功回调。

在Web API 2之前,我使用以下方法没有问题。显然,问题是我返回一个Ok结果,而不是一个JSON成功对象:

[HttpPost]
public JsonResult UpdateTitle(Guid playlistId, string title)
{
    using (ITransaction transaction = Session.BeginTransaction())
    {
        PlaylistManager.UpdateTitle(playlistId, title);
        transaction.Commit();
    }
    return Json(new
        {
            success = true
        });
}

web API 2成功的正确方法是什么?

如何使用Web API 2来指示成功

问题其实很简单:

dataType: 'json',

告诉jQuery不要对服务器的响应类型使用智能猜测。如果服务器没有响应json,它将抛出一个错误。如果我只是删除这个属性,那么一切都像预期的那样。

返回HttpResponseMessage并设置StatusCode为OK:

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