![](/img/trans.png)
[英]Open url after success in ajax function in asp.net core
[英]ASP.NET Core Ajax “done”, “success” or “error” not firing
事情是這樣的:我有一個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()調用中出現的消息。
這是“網絡”標簽中顯示的內容:
jQuery文檔僅將這些列為method
參數的有效值: "GET"
, "POST"
或"PUT"
。
聽起來,如果要執行"DELETE"
則想直接使用XMLHttpRequest
。 這很簡單:
$('.delete-project').click(function (e) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status >= 200 && xhr.status < 300) {
console.log("Succeeded");
} else {
console.log("Failed");
}
}
};
xhr.open("DELETE", "/api/project/" + id);
xhr.send();
return false;
});
(您也許可以使用load
和error
事件而不是readystatechange
;我從沒嘗試過使用"DELETE"
這樣的操作,所以...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.