我试图通过一个AJAX调用从数据库中删除一条记录,如下所示:
$.ajax({
type: 'POST',
url: '/api/Person/DeletePerson',
data: { personId: personId },
contentType: 'application/json',
success: function (data) {
if (data != null) {
}
},
error: function (err, data) {
alert("Error " + err.responseText);
}
});这是它应该输入的方法:
public void DeletePerson(int personId)
{
var t = 0; // i'm breaking the debugger right here, never gets hit.
}但是,它却不断地输入以下方法:
public HttpResponseMessage PostPerson(dynamic person)
{
HttpResponseMessage response;
if (User.Identity.GetUserId() == null)
{
response = Request.CreateResponse(HttpStatusCode.Forbidden, "Please log in.");
}
return response;
}这两个方法都驻留在一个WebApi Controller中。
不支持AJAX Type: delete。如果我用它来代替,我就会得到这样的信息:
The requested resource does not support http method 'delete'我该怎么做呢?
编辑
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}发布于 2014-02-19 23:09:59
要调用Delete方法(因为这是rest实现),可以使用DELETE谓词调用/api/Person/ URL。
$.ajax({
type: 'DELETE',
url: '/api/Person',
data: { personId: personId },
contentType: 'application/json',
success: function (data) {
if (data != null) {
}
},
error: function (err, data) {
alert("Error " + err.responseText);
}
});否则,您需要更新操作以接受delete谓词
[HttpDelete]
public void DeletePerson(int personId)
{
var t = 0; // i'm breaking the debugger right here, never gets hit.
}如果希望使控制器从JSON有效负载而不是请求URL中查找id,请按以下方式重写。
public void DeletePerson([FromBody]int personId)
{
var t = 0; // i'm breaking the debugger right here, never gets hit.
}https://stackoverflow.com/questions/21894523
复制相似问题