【发布时间】:2018-08-05 16:05:59
【问题描述】:
事情是这样的:我有一个 ajax 脚本,它向 API 控制器发送“DELETE”请求,我想要删除的东西确实从数据库中删除,API 返回 200 OK 响应,但没有事件将触发,我真的不知道为什么。
下面是脚本:
@section Scripts{
<script type="text/javascript">
$(document).ready(function () {
$('.delete-project').click(function (e) {
$.ajax({
url: '/api/project/' + id,
method: 'DELETE',
async: true,
dataType: 'text',
success: function () {
console.log("Success reached");
}
}).done(function () {
alert("done");
console.log("done");
}).error(function () {
console.log("failed");
});
return false;
});
});
</script>
}
我也尝试过使用“async: false”,但不幸的是,它并没有解决我的问题。
(另外,返回 false 是因为我点击的是嵌入在可点击列表中的按钮,这是为了防止在点击按钮后被重定向,就好像您点击了列表中的其他任何位置一样. 我想在收到任何问题之前指出这一点)
这是API执行的代码
// DELETE api/<controller>/5
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)
{
var project = await _unitOfWork.Projects.GetById(id);
if (project == null)
throw new HttpRequestException();
else {
await _unitOfWork.Projects.Delete(project);
await _unitOfWork.SaveChangesAsync();
return Ok("Ok");
}
}
此外,控制台中没有任何内容。 console.log() 调用中没有错误消息和应该出现的消息。
这是“网络”标签中显示的内容:
Here are the details about the 200 OK Response in network tab, on Firefox
【问题讨论】:
标签: javascript ajax asp.net-core asp.net-ajax