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>
浙公网安备 33010602011771号