學習NetCore應用框架——返回json數據.


此文檔解決以下問題:

1.通過前端頁面按鈕執行控制器的方法

2.地址欄訪問json數據

3.返回json數據(JavaScript的ajax方法)

4.返回json數據(jQuery的ajax方法).

附:ASP.NET Core 官方文檔 地址:https://docs.microsoft.com/zh-cn/aspnet/core/?view=aspnetcore-2.2

 


 

 

1.通過前端頁面按鈕執行控制器的方法

1)AccountController.cs

        public IActionResult Index3()
        {
            //View 幫助程序方法
            //用 return View("<ViewName>"); 顯式返回
            //如果使用從應用根目錄開始的絕對路徑(可選擇以“/”或“~/”開頭),則須指定.cshtml或者.html 擴展名
            //此處介紹Views文件夾外的頁面訪問
            return View("/pages/demo/index3.html");
        }


        public IActionResult Index5()
        {
            //Redirect是讓瀏覽器重定向到新的地址
            //建議創建在wwwroot項目文件下
            return Redirect("/pages/demo/index5.html");
        }

 

 

2) index5.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="../../lib/jquery.js"></script>
</head>
<body>
    <h2>根目錄下wwwroot項目文件夾中pages 中demo文件夾中的index5.html頁面</h2>
    <input type="button" name="btn" id="btn" value="跳轉(執行account控制器中的index3方法)" />
    <script>

        $(function () {
            $("#btn").click(function () {
                //執行account控制器中的index3方法
                window.location = "/account/index3";
            });
        });
    </script>
</body>
</html>

 

 

 

3)運行瀏覽  ,account控制器中的index5方法,頁面結果如下,點擊按鈕

 

4) 按鈕執行 account控制器中的index3方法,頁面結果如下

 

 

2.地址欄訪問json數據

1)AccountController.cs

        public JsonResult GetJson()
        {
            // 返回Json數據
            //可在瀏覽器中通過 localhost:端口/[ControllerName]/[MethodName]執行
            //這里是   localhost:端口/Account/GetJson
            return Json(new { Code = 0, Msg = "Json數據測試" });
        }

 

 

 

2) 運行瀏覽,結果如下

 

 

3.返回json數據(JavaScript的ajax方法)

1)AccountController.cs

        public IActionResult Index6()
        {
            //Redirect是讓瀏覽器重定向到新的地址
            //建議創建在wwwroot項目文件下
            return Redirect("/pages/demo/index6.html");
        }

 

 

2) index6.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>

    <h2>根目錄下wwwroot項目文件夾中pages 中demo文件夾中的index6.html頁面</h2>
    code:<input type="text" name="code" id="code" value="" /><br />
    msg:<input type="text" name="msg" id="msg" value="" /><br />

    <input type="button" name="btn1" id="btn1" value="返回json數據(JavaScript的ajax方法)" onclick="ajax()" /><br />
    <input type="button" name="btn2" id="btn2" value="返回json數據(jQuery的ajax方法)" /><br />
    <a id="xinxi"></a><br />

</body>
</html>

 

 

 

3) AccountController.cs,添加代碼,如下

        public IActionResult Index6()
        {
            //Redirect是讓瀏覽器重定向到新的地址
            //建議創建在wwwroot項目文件下
            return Redirect("/pages/demo/index6.html");
        }

        public IActionResult GetJson2([FromBody]Model model)
        {
            //此方法傳遞模型數據類型的數據
            //可通過ajax來調用
            if (model != null)
            {
                int code = model.Code;
                string msg = model.Msg;
                return Json(new { Code = code, Msg = msg, result = "code=" + code + "*******msg=" + msg });
            }
            else
            {
                return Json(new { result = "Is Null" });
            }
        }
        public class Model
        {   //此類可以放在Models文件夾中
            public int Code { get; set; }
            public string Msg { get; set; }
        }

 

 

 

 

 

 

4) index.html ,添加代碼,結果如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="../../lib/jquery.js"></script>
</head>
<body>

    <h2>根目錄下wwwroot項目文件夾中pages 中demo文件夾中的index6.html頁面</h2>
    code:<input type="text" name="code" id="code" value="" /><br />
    msg:<input type="text" name="msg" id="msg" value="" /><br />

    <input type="button" name="btn1" id="btn1" value="返回json數據(JavaScript的ajax方法)" onclick="ajax()" /><br />
    <input type="button" name="btn2" id="btn2" value="返回json數據(jQuery的ajax方法)" /><br />
    <a id="xinxi"></a><br />

    <script>
        function ajax() {
            var code = document.getElementById("code").value;
            var msg = document.getElementById("msg").value;
            var xixn = JSON.stringify({
                code: code,
                msg: msg

            });
            var xhr = new XMLHttpRequest;//創建一個 XMLHttpRequest 對象,XMLHttpRequest是實現ajax的基礎
            xhr.open("POST", "/Account/GetJson2", true)//請求方式為"Post","/Account/GetJson2"為服務器地址(在MVC這里就是控制器地址+方法名),true表示選擇異步
            xhr.setRequestHeader("Content-type", "application/json")//設置請求參數類型
            xhr.send(xixn);

            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var s = xhr.responseText;
                    document.getElementById("xinxi").innerHTML = JSON.parse(s).result;
                }

            }
        }
    </script>
</body>
</html>

 

 

5) 運行瀏覽,先執行accoun控制器中的index6方法

 

6) 輸入數據,點擊按鈕

 

 

6) 在當前頁返回數據,結果如下

 

 

4.返回json數據(jQuery的ajax方法)

1)AccountController.cs

        public IActionResult Index6()
        {
            //Redirect是讓瀏覽器重定向到新的地址
            //建議創建在wwwroot項目文件下
            return Redirect("/pages/demo/index6.html");
        }

        public IActionResult GetJson2([FromBody]Model model)
        {
            //此方法傳遞模型數據類型的數據
            //可通過ajax來調用
            if (model != null)
            {
                int code = model.Code;
                string msg = model.Msg;
                return Json(new { Code = code, Msg = msg, result = "code=" + code + "*******msg=" + msg });
            }
            else
            {
                return Json(new { result = "Is Null" });
            }
        }
        public class Model
        {   //此類可以放在Models文件夾中
            public int Code { get; set; }
            public string Msg { get; set; }
        }

 

2) index6.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="../../lib/jquery.js"></script>
</head>
<body>

    <h2>根目錄下wwwroot項目文件夾中pages 中demo文件夾中的index6.html頁面</h2>
    code:<input type="text" name="code" id="code" value="" /><br />
    msg:<input type="text" name="msg" id="msg" value="" /><br />

    <input type="button" name="btn1" id="btn1" value="返回json數據(JavaScript的ajax方法)" /><br />
    <input type="button" name="btn2" id="btn2" value="返回json數據(jQuery的ajax方法)" /><br />
    <a id="xinxi"></a><br />

    <script>
        $(document).ready(function () {

            $("#btn2").click(function () {
                var code = $("#code").val();
                var msg = $("#msg").val();
                var data = JSON.stringify({
                    code: code,
                    msg: msg

                });
                $.ajax({
                    type: "post",
                    data: data,
                    url: "/account/GetJson2",
                    contentType: 'application/json;charset=utf-8',//返回json數據,一定要設置contentType 為application/json,其他不需要
                    dataType: "json",
                    success: function (result) {
                        var n = result.result;
                        alert(n)
                    },
                    error: function () {
                        alert("獲取數據失敗!");
                    }
                });

            });

        });

    </script>

</body>
</html>

 

 

3) 運行瀏覽,先執行accoun控制器中的index6方法

 

4) 在當前頁以彈出框形式返回數據,結果如下

 

   正文結束~~~  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM