トッカンソフトウェア

ASP.NET MVC AJAX

ASP.NET MVCでAJAXを使ってみます。

POST

サーバ側処理

コントローラを「MVC5コントローラー-空」で作成します。ファイル名は「AjController.cs」で作成しました。
				
using System;
using System.Collections.Generic;
using System.Web.Mvc;

namespace HelloWorld3.Controllers
{
    public class AjController : Controller
    {
        public ActionResult AjaxTest()
        {
            return View();
        }


        [HttpPost]
        public ActionResult Test(string str1, string str2)
        {
            IDictionary<String, String> dic = new Dictionary<String, String>();
            dic.Add(str1, str2);
            return Json(dic);
        }
    }
}

			

クライアント側処理

コントローラを作成すると、Viewsにコントローラに対応するフォルダ(Aj)が作成されているので、この中にViewを作成します。
ファイル名は「AjaxTest.cshtml」としました。
				

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>AjaxTest</title>

    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script>
        $(function () {

            var param = {
                str1: "Hello",
                str2: "World!!"
            };

            $.ajax({
                url: '@Url.Action("Test", "Aj")',
                type: "POST",
                data: param
            }).done(function (data, status, xhr) {
                // 正常
                for (var key in data) {
                    alert(key + " " + data[key]);
                }
            }).fail(function (xhr, status, error) {
                // 異常
                alert(error);
            }).always(function (data, status, xhr) {
                // 常に
            });
        });

    </script>
</head>
<body>
    AjaxTest
</body>
</html>

        }
    }
}


			
urlは、@Url.Actionで指定しています。直でURLを記述するとVisualStudioでは動作しますが、
本番環境に入れたときに404エラー(該当ページなし)になります。注意して下さい。

GET

サーバ側処理

コントローラを「MVC5コントローラー-空」で作成します。ファイル名は「AjController.cs」で作成しました。
				
using System;
using System.Collections.Generic;
using System.Web.Mvc;

namespace HelloWorld3.Controllers
{
    public class AjController : Controller
    {
        public ActionResult AjaxTest()
        {
            return View();
        }

        public ActionResult Test(string str1, string str2)
        {
            IDictionary<String, String> dic = new Dictionary<String, String>();
            dic.Add(str1, str2);
            return Json(dic, JsonRequestBehavior.AllowGet);
        }
    }
}

			

クライアント側処理

コントローラを作成すると、Viewsにコントローラに対応するフォルダ(Aj)が作成されているので、この中にViewを作成します。
ファイル名は「AjaxTest.cshtml」としました。
				

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>AjaxTest</title>

    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script>
        $(function () {

            var param = {
                str1: "Hello",
                str2: "World!!"
            };

            $.ajax({
                url: "/Aj/Test",
                type: "GET",
                data: param
            }).done(function (data, status, xhr) {
                // 正常
                for (var key in data) {
                    alert(key + " " + data[key]);
                }
            }).fail(function (xhr, status, error) {
                // 異常
                alert(error);
            }).always(function (data, status, xhr) {
                // 常に
            });
        });

    </script>
</head>
<body>
    AjaxTest
</body>
</html>


			


実行イメージ


ページのトップへ戻る