Ajax调用返回内部500错误
本文关键字:错误 内部 返回 调用 Ajax | 更新日期: 2023-09-27 18:03:14
嗨,我试图执行一个ajax调用到服务器,但我似乎没有运气,我一直回到控制台错误500内部服务器错误。这是我的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开发工具中的Network选项卡,Firefox中的Firebug或Fiddler来调试ajax调用。您可以观察发送到服务器的ajax请求以及来自服务器的响应,以便查看是否以正确的格式(JSON)发送了正确的数据(bookId
)以及来自服务器的响应是什么
你 WebMethod 必须静态
[WebMethod(true)]
public static ActionResult DeleteBook(int bookId)
{
bookRepository.DeleteBook(bookId);
return RedirectToAction("Books", "ProductManager");
}
将HttpPost添加到您的方法中并尝试
[HttpPost]
public ActionResult DeleteBook(int bookId)
{
bookRepository.DeleteBook(bookId);
return RedirectToAction("Books", "ProductManager");
}