如何指示 Web API 2 成功?

Sea*_*son 1 c# ajax asp.net-web-api asp.net-web-api2

我正在向我的服务器发出 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();
}
Run Code Online (Sandbox Code Playgroud)

除了执行 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
        });
}
Run Code Online (Sandbox Code Playgroud)

表明 Web API 2 成功的正确方法是什么?

Sea*_*son 5

问题其实很简单:

dataType: 'json',
Run Code Online (Sandbox Code Playgroud)

告诉 jQuery 不要对服务器的响应类型使用智能猜测。如果服务器不响应 json,则会抛出错误。如果我只是删除该属性,那么一切都会按预期进行。