AJAX MVC server返回Json数据,client获取Json数据

<>

控制器 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();
        }

        //---------------------------------第一种写法:server返回一个Json对象

        public ActionResult GetData1()
        {
            JsonResult json = new JsonResult();
            json.JsonRequestBehavior = JsonRequestBehavior.AllowGet; //同意来自client的HTML GET请求
            json.Data = new { code = 0, message = "成功" };

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

        //---------------------------------另外一种写法:server返回一个Json对象

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

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

            return Json(new { code = 0, message = "ON" }); //通过測试:採用这样的形式。client只能通过异步的Post请求才干取到数据,假设异步Get请求,无法获取数据

        }

        //---------------------------------第三种写法:server返回一个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格式的字符串。

所以client通过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) {   //server端返回的是一个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) {   //server端返回的是一个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) { //server返回的是一个json格式的字符串,所以这个data是一个字符串。并非一个对象
                var jsonObj = $.parseJSON(data); //将这个字符串 转换成json对象

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

            })
        })
    })
</script>
时间: 2024-11-20 14:05:10

AJAX MVC server返回Json数据,client获取Json数据的相关文章

JSON之三:获取JSON文本并解释(以google的天气API为例)

google提供了天气的api,以广州天气为例,地址为: http://api.openweathermap.org/data/2.5/weather?q=guangzhou 返回的结果为: { "coord": { "lon": 113.25, "lat": 23.12 }, "sys": { "message": 0.2088, "country": "CN",

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

<> 控制器 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 { pu

volley post非json格式数据并获取json数据

在使用JsonObjectRequest时无法post非json格式的数据,因而采用StringRequest获取到相应的数据后再转为json格式的数据. //这里的上下文需要讨论 private static RequestQueue mRequestQueue = Volley.newRequestQueue(Global.getContext()); public interface IResponse{ void subscribeData(Object data); } /**Post

ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)

我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为json,xml等),但是如果Controller的自动序列化后的结果不是我们想要的该怎么办呢?其实在MVC中有一个GlobalConfiguration(命名空间System.Web.Http)类可以设置WebApi的Controller自动序列化机制,这里我们就通过WebApi的Controller自动序列化json来讲解怎么设置序列化json的机制. 首先我们来看一个例子,下面

iOS数据解析之JSON解析

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,易于阅读和编写,同时也易于机器解析和生成 JSON文件有两种结构: 1 对象:"名称/值"对的集合,以"{"开始,以"}"结束,名称和值中间用":"隔开 2 数组:值的有序列表,以"["开始,以"]"结束,中间是数据,数据以","分隔 (JSON中

小程序 picker 多列选择器 数据动态获取

需求是将各校区对应各班级的数据 以两列选择器的方式展示出来,并且可以在选择完成之后记录选结果参数. 校区数据 和 班级数据 分别是两个接口,以 校区 teach_area_id 字段关联 其各班级数据 <picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value=&quo

微信获取用户数据后台写法,author2.0认证

1 /* 微信授权接口 */ 2 //1.设置路由 3 router.get('/wechat/userinfo', function(req, res) { 4 var cb = req.query.cb; 5 //设置cookie 6 res.cookie(wechat_userinfo_callback_url, cb); 7 var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appi

获取JSON对象的属性名称

1.问题背景 一个json对象,是以键值对组成,通过循环json对象,获取json对象中的属性名称 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&

使用EF生成数据模型,然后在数据库直接修改数据,前台刷新以后数据没有改变

sl5+wcf ria +ef 初学者水平 在sqlserver手动修改了数据库的数据以后,再到前台去刷新数据,发现数据没有变化,服务端返回和前台不一致 服务端代码 public IQueryable<Customer> GetCustomerByCustomerId(string customerId) { return this.ObjectContext.Customer.Where(e => e.CustomId == customerId); } 客户端更新按钮代码 priva