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 に答える