我正在向我的服务器发出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表明成功的正确方法是什么?
答案 0 :(得分:4)
问题实际上非常简单:
dataType: 'json',
告诉jQuery不要对服务器的响应类型使用智能猜测。如果服务器没有响应json,它将抛出一个错误。如果我只是删除该属性,那么一切都按预期工作。
答案 1 :(得分:3)
返回HttpResponseMessage并将StatusCode设置为OK:
public HttpResonseMessage UpdateTitle() {
...
return Request.CreateResponse(HttpStatusCode.OK);
}