1. ホーム
  2. c#

[解決済み] asp.net mvcでコントローラへの簡単なAjaxコールの作成

2022-05-15 01:08:47

質問

ASP.NET MVCのAjax呼び出しを始めようとしています。

コントローラです。

public class AjaxTestController : Controller
{
    //
    // GET: /AjaxTest/
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult FirstAjax()
    {
        return Json("chamara", JsonRequestBehavior.AllowGet);
    }   
}

表示します。

<head runat="server">
    <title>FirstAjax</title>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var serviceURL = '/AjaxTest/FirstAjax';

            $.ajax({
                type: "POST",
                url: serviceURL,
                data: param = "",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: successFunc,
                error: errorFunc
            });

            function successFunc(data, status) {     
                alert(data);
            }

            function errorFunc() {
                alert('error');
            }
        });
    </script>
</head>

私は、データを返すコントローラメソッドでアラートを表示する必要があるだけです。上記のコードでは、ビューに "chamara"を表示するだけです。アラートは発生しません。

アップデイト

コントローラを以下のように変更したところ、動作するようになりました。なぜ今動いているのか、明確な理由がわかりません。どなたか解説をお願いします。パラメータ"a"は、私は同じメソッド名とパラメータを持つ2つのメソッドを追加することはできませんので、私はそれを追加しました関連していません。私はこれが解決策ではないかもしれないと思いますが、それは動作しています。

public class AjaxTestController : Controller
    {
        //
        // GET: /AjaxTest/
        [HttpGet]
        public ActionResult FirstAjax()
        {
            return View();
        }

        [HttpPost]
        public ActionResult FirstAjax(string a)
        {
            return Json("chamara", JsonRequestBehavior.AllowGet);
        }
    }

どのように解決するのですか?

アップデートを行った後。

  1. その最初の呼び出しは、デフォルトのHttpGetリクエストでFirstAjaxアクションです。 と空白のHtmlビューをレンダリングします。(以前はそれを持っていなかった)
  2. そのビューの DOM 要素を読み込むと、Ajax 呼び出しが発生し、アラートが表示されます。

先ほどは、HTMLをレンダリングせずにJSONをブラウザに返すだけでした。現在は、JSONデータを取得するためのHTMLビューがレンダリングされています。

JSONはHTMLではなく、プレーンなデータなので、直接レンダリングすることはできません。