[英]Ajax call returns internal 500 error
嗨,我正在嘗試執行對服務器的Ajax調用,但我似乎沒有運氣,我一直在控制台上返回錯誤500 Internal server error。這是我的Ajax調用:
$("body").on("click", "#ok", function (e) {
var id = $(this).attr("data-bookid");
$.ajax({
url: "/ProductEditor/DeleteBook",
type:"POST",
data: { bookId: parseInt(id) },
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
e.preventDefault();
})
這是我要調用的C#代碼:
public ActionResult DeleteBook(int bookId)
{
bookRepository.DeleteBook(bookId);
return RedirectToAction("Books", "ProductManager");
}
在嘗試調試時,我注意到甚至沒有調用DeleteBook方法。
我究竟做錯了什么?
編輯我添加了[HttpPost]屬性,但仍然無法正常工作
沒有更多信息,很難告訴您您做錯了什么。
但是,jQuery ajax函數的error
函數回調具有三個參數:
(jqXHR,textStatus,errorThrown)
$.ajax({
url: "/ProductEditor/DeleteBook",
type:"POST",
data: { bookId: parseInt(id) },
success: function (data) {
console.log(data);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
第三個參數errorThrown
將具有對/ProductEditor/DeleteBook
的調用的HTTP響應文本。 我建議查看一下errorThrown顯示的內容,以及可能在調試模式下運行整個程序。
也許var id = $(this).attr("data-bookid");
是不正確的,並且id的值被設置為undefined
?
另外,您可以使用IE或Chrome中的F12開發工具中的“網絡”選項卡,Firefox中的Firebug或Fiddler來調試ajax調用。 您可以查看正在發送到服務器的ajax請求以及來自服務器的響應,以查看是否以正確的格式(JSON)發送了正確的數據( bookId
)以及來自服務器的響應是什么
將HttpPost添加到您的方法並嘗試
[HttpPost]
public ActionResult DeleteBook(int bookId)
{
bookRepository.DeleteBook(bookId);
return RedirectToAction("Books", "ProductManager");
}
您的WebMethod必須是靜態的
[WebMethod(true)]
public static ActionResult DeleteBook(int bookId)
{
bookRepository.DeleteBook(bookId);
return RedirectToAction("Books", "ProductManager");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.