1

Ajax を使用してビューを挿入しようとしていますが、うまくいきません。私は Ajax について何も知りませんが、学ぼうとしています。ここで何が欠けているのですか、それとも私がこれをしている方法が完全に間違っていますか?

    foreach(ect...) {
   <tr>
       <td>
      <a href="#" onclick="AjaxStoryClick(@item.Id)" style="color:dodgerblue; font-weight: bold">@item.Name</a>

       <script type="text/javascript">
function AjaxStoryClick(storyid) {

    $.ajax({
        url: '@Url.Action("UserStoriesList", "Estimate")',
        type: 'POST',
        data: storyid,
        success: function(result){
            $('#stories').html(result);

        }
     });         
}    

      </script>

コントローラ:

       public ActionResult UserStoriesList(int id)
    {
        ActiveEpicId = id;
        var userstories = userRepository.Select().Where(x => x.EpicId.Equals(id)).ToList();
        return PartialView("UserStoriesList",userstories);
    }
4

2 に答える 2

3

UserStoriesListAction メソッドは TypeですかHttpPost? Ajax リクエストのタイプはPOSTです。そのため、HttpPost タイプの UserStoriesList アクション メソッドでのみ処理されます。

 [HttpPost]
 public ActionResult UserStoriesList(int id)
 {
   // your code goes here
 }

ActionMethod が Type ではない場合HttpPost(つまり、タイプであるということですHttpGet)、jquery get ajax 呼び出しを使用してデータを取得できます。

ajax 呼び出しのパラメーター名がアクション メソッドのパラメーター名と同じであることを確認してください。

function AjaxStoryClick(storyid) {
  $.get('@Url.Action("UserStoriesList", "Estimate")',{id : storyid},function(result){
     $('#stories').html(result);
  });
}

}

于 2012-04-11T02:42:57.053 に答える
1

Ajax 呼び出しは、パラメーター 'Id' の値をアクション メソッド 'UserStoriesList' に渡しません。行'data: storyid'は'data: { id:storyid},'である必要があります。

アクション メソッド 'UserStoriesList' には null を許可しないidパラメータがあるため、サーバーはエラー応答を生成します。

ajax エラー イベントのコールバックがなく、デバッグ モードではアクションのブレークポイントにヒットしない場合、エラー応答は表示されません。

更新されたスクリプトは次のとおりです。

<script type="text/javascript">

function AjaxStoryClick(storyid) {

 $.ajax({
    url: '@Url.Action("UserStoriesList", "Estimate")',
    type: 'POST',
    data: { id: storyid },
    success: function (result) {
        $('#stories').html(result);
    },
    error: function (xhr) {
        alert("Error: " + xhr.responseText);
    }
 });
}
</script>

アクション方法:

public ActionResult UserStoriesList(int id)
{
  ActiveEpicId = id;
  var userstories = userRepository.Select().Where(x => x.EpicId.Equals(id)).ToList();

  if (Request.IsAjaxRequest())
    return PartialView("_UserStoriesList", userstories);
  else
    return View("UserStoriesList", userstories);
}
于 2012-04-11T04:08:00.290 に答える