我是新手,使用ASP.NET,MVC3和AJAX。
我尝试使用AJAX调用在我的控制器中调用方法,但是我收到内部服务器错误。
这是我的Javascript方法:
function DeleteItem(id) {
var answer = confirm("Are you sure ?")
if(answer) {
$.ajax({
type: 'POST',
url: '/Item/Delete',
data: id,
dataType: 'json',
success: function (data) {
alert('Function called');
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
}
这是我的控制器中的方法:
public ActionResult Delete(int idItem) {
Item.Delete(idItem); //delete my item
return RedirectToAction("Index", "Item");
}
调用Javascript方法,但当我回答“是的,我确定要删除”时,我收到内部服务器错误,我不知道为什么。是什么导致服务器错误?
答案 0 :(得分:1)
我的猜测是你获得内部服务器的原因是因为你传入的int的名称与你在控制器中期望的int不匹配。因此,idItem很可能为null,这会导致您在删除时出现内部服务器错误。
更改数据以匹配
function DeleteItem(id) {
var answer = confirm("Are you sure ?")
if (answer) {
$.ajax({
type: 'POST',
url: '/Item/Delete',
data: { idItem: id},
dataType: 'json',
success: function (data) {
alert('Function called');
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
}
答案 1 :(得分:0)
您的ActionResult方法没有[HttpPost]属性。您的Ajax调用类型为“POST”。
答案 2 :(得分:0)
也许您需要将要传递给JSON格式的id
序列化。而且您还需要使用[HttpPost]
属性修饰您的操作方法,以便它接受POST动词。