AJAX调用返回ASP.NET MV3项目中的Interal Server Error

时间:2013-03-16 13:51:36

标签: javascript ajax asp.net-mvc

我是新手,使用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方法,但当我回答“是的,我确定要删除”时,我收到内部服务器错误,我不知道为什么。是什么导致服务器错误?

3 个答案:

答案 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动词。