Ajax调用返回内部500错误
嗨我正在尝试执行ajax调用服务器,但我似乎没有运气我一直在控制台回来一个错误500内部服务器错误。这是我的ajax调用:Ajax调用返回内部500错误
$("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
将会对HTTP响应文本致电/ProductEditor/DeleteBook
。我会建议看看errorThrown显示的是什么,以及可能在调试模式下运行整个程序。
也许var id = $(this).attr("data-bookid");
不正确,并且id的值被设置为undefined
?此外,您可以使用IE或Chrome中的F12开发工具,Firefox中的Firebug或Fiddler中的网络选项卡调试ajax调用。您可以观看发送到服务器的ajax请求以及来自服务器的响应,以查看是否以正确的格式(JSON)发送了正确的数据(bookId
)以及服务器的响应是什么
我也想添加你应该在您的MVC中处理错误行动,@CodeCaster在他对你的问题的评论中表示。 – 2013-03-11 13:25:03
添加HttpPost到你的方法,并尝试
[HttpPost]
public ActionResult DeleteBook(int bookId)
{
bookRepository.DeleteBook(bookId);
return RedirectToAction("Books", "ProductManager");
}
我添加了它,但仍然没有调用该方法 – aleczandru 2013-03-11 13:10:06
发布错误消息,你正在与500 – 2013-03-11 13:10:50
你的WebMethod必须静态
[WebMethod(true)]
public static ActionResult DeleteBook(int bookId)
{
bookRepository.DeleteBook(bookId);
return RedirectToAction("Books", "ProductManager");
}
添加[HttpPost]你上面的控制器动作 – 2013-03-11 13:07:08
有你装饰了你的方法有[HttpPost] – 2013-03-11 13:07:16
AJAX调用是好的。正如消息所述,这是服务器错误,因此请检查您的服务器日志。 – 2013-03-11 13:07:18