您的位置:首页 > Web前端 > JavaScript

AJAX MVC 服务器返回Json数据,客户端获取Json数据

2015-07-03 01:44 666 查看
<>

控制器 Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;

namespace MvcApplication2.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        
        //---------------------------------第一种写法:服务器返回一个Json对象

        public ActionResult GetData1()
        {
            JsonResult json = new JsonResult();
            json.JsonRequestBehavior = JsonRequestBehavior.AllowGet; //允许来自客户端的HTML GET请求
            json.Data = new { code = 0, message = "成功" };

            return json; //这里直接返回一个json对象给客户端,客户端通过ajax的请求后,获得的直接就是一个json对象,不需要再用$.parseJSON(data)这个方式将字符串转换成Json对象了,因为取到的本身就是一个json对象,而不是一个字符串。
        }

        //---------------------------------第二种写法:服务器返回一个Json对象

        public ActionResult GetData2()
        {
            //其实调用的是JsonResult类下的这个方法:protected internal JsonResult Json(object data);

            //注意:Json()是一个方法,参数是一个object类型的对象,返回值是JsonResult类型

            return Json(new { code = 0, message = "ON" }); //通过测试:采用这种形式,客户端只能通过异步的Post请求才能取到数据,如果异步Get请求,无法获取数据

        }

        //---------------------------------第三种写法:服务器返回一个Json格式的字符串

        public ActionResult GetData3()
        {
            JavaScriptSerializer json = new JavaScriptSerializer();

            var jsonObj = new { code = 1, message = "OK" }; //构造一个对象

            string jsonStr = json.Serialize(jsonObj); //将这个对象转换成json格式的字符串

            return Content(jsonStr); //返回一个json格式的字符串。 所以客户端通过ajax请求后,获得的这个数据仅仅是一个json格式的字符串,所以需要用$.parseJSON(data)这个方式将字符串转换成Json对象
        }
    }
}


视图 View

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/jquery-1.11.2.js"></script>
</head>
<body>
    <div>

    <button id="submit1">提交1</button> <button id="submit2">提交2</button><button id="submit3">提交3</button>

    </div>
</body>
</html>
<script type="text/javascript">
    $(function () {
        $("#submit1").click(function () {
            $.get("/Home/GetData1", function (data) {   //服务器端返回的是一个Json对象,所以这个data是一个json对象,并不是一个json格式的字符串。
                alert(data.code); //打印出:0
                alert(data.message);//打印出:成功

                //除了以上的取值方式外下面的方式也是可以取到值的

                alert(data["code"]);   //打印出:0
                alert(data["message"]); //打印出:成功
            })
        })
    })
</script>

<script type="text/javascript">
    $(function () {
        $("#submit2").click(function () {

            //不知道为什么这种一定要是异步Post请求,如果是异步Get请求无法取到数据

            $.post("/Home/GetData2", function (data) {   //服务器端返回的是一个Json对象,所以这个data是一个json对象,并不是一个json格式的字符串。
                alert(data.code); //打印出:0
                alert(data.message); //打印出:ON
            })
        })
    })
</script>

<script type="text/javascript">
    $(function () {
        $("#submit3").click(function () {
            $.get("/Home/GetData3", function (data) { //服务器返回的是一个json格式的字符串,所以这个data是一个字符串,并不是一个对象
                var jsonObj = $.parseJSON(data); //将这个字符串 转换成json对象

                alert(jsonObj.code); //打印出:1
                alert(jsonObj.message); //打印出:OK

            })
        })
    })
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: