1

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

4

3 回答 3

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);
            }
        });
    }
}
于 2013-03-16T14:12:34.997 回答
0

您的 ActionResult 方法没有 [HttpPost] 属性。您的 Ajax 调用属于“POST”类型。

于 2013-03-16T13:57:45.527 回答
0

也许您需要将id传递给操作的内容序列化为 JSON 格式。您还需要用[HttpPost]属性装饰您的操作方法,以便它接受 POST 动词。

于 2013-03-16T14:00:51.377 回答