MVC+jquery+AJAX的几种方式
// 传过去一个简单值,获取一个简单值 $.ajax({ type: "GET", url: '<%= Url.Action("xx", "Corp") %>', data: "type=11", success: function (msg) { alert(msg); } }); public string xx() { string s = this.Request.QueryString["type"]; return s + ":ssssss"; } // 获取一个复杂值 $.ajax({ url: '<%= Url.Action("xx", "Corp") %>', type: "POST", success: function(data) { var obj = eval("(" + data + ")"); alert(obj.name); } }); // 这样更方便。 $.ajax({ url: '<%= Url.Action("xx", "Corp") %>', type: "POST", dataType:"json", success: function(data) { alert(data.name); } }); public ActionResult xx() { return this.Json( new { name = "Dr.Worm", worm = "Programer" } ); } // 传过去一个复杂值,获取一个复杂值 $.ajax({ url: '<%= Url.Action("xx", "Corp") %>', type: "POST", dataType: "json", data: "ID=1&FirstName=C&LastName=HY", success: function(data) { alert(data.ID + data.FirstName + data.LastName); } }); public JsonResult xx( FormCollection form ) { return Json( new { ID = int.Parse(this.Request.Form[ "ID" ] ), FirstName = "w:" + this.Request.Form[ "FirstName" ], LastName = "s:" + this.Request.Form[ "LastName" ] } ); }
客户端调用方式:
$("#ButAjax").click(function() { $.ajax({ type: "POST", //默认是GET url: "/AjaxTest/getPerson", data: "ID=1&FirstName=C&LastName=HY", async: true, //异步 cache: false, //不加载缓存 success: function(obj) { alert(obj.ID + obj.FirstName + obj.LastName + obj.Man); }, error: function() { alert("请求失败"); } }); }); $("#ButAjax2").click(function() { $.ajax({ type: "POST", //默认是GET url: "/AjaxTest/getPerson2?ID=3&FirstName=C&LastName=HY", async: true, //异步 cache: false, //不加载缓存 success: function(obj) { alert(obj.ID + obj.FirstName + obj.LastName + obj.Man); }, error: function() { alert("请求失败"); } }); }); $("#ButAjax3").click(function() { $.ajax({ type: "POST", //默认是GET url: "/AjaxTest/getString", async: true, //异步 cache: false, //不加载缓存 success: function(str) { alert(str); }, error: function() { alert("请求失败"); } }); }); $("#ButAjax4").click(function() { $.ajax({ type: "POST", //默认是GET url: "/AjaxTest/getJsonString", async: true, //异步 cache: false, //不加载缓存 success: function(str) { var obj = eval(str); $.each(obj, function(item, value) { alert(item + ":" + obj[item]); }); }, error: function() { alert("请求失败"); } }); }); //================================================================ $("#ButJson1").click(function() { $.getJSON("/AjaxTest/getJson1", { ID: "22", FirstName: "C1", LastName: "HY1" }, function(json) { alert(json); $.each(json, function(item, value) { alert(item + ":" + json[item]); }); }); }); $("#ButJson2").click(function() { $.getJSON("/AjaxTest/getJson2", { ID: "22", FirstName: "C1", LastName: "HY1" }, function(json) { alert(json); $.each(json, function(item, value) { alert(item + ":" + json[item]); }); }); }); $("#ButJson3").click(function() { $.getJSON("/AjaxTest/getJson3", { ID: "22", FirstName: "C1", LastName: "HY1" }, function(json) { alert(json); $.each(json, function(item, value) { alert(item + ":" + json[item]); }); }); }); $("#ButJson4").click(function() { $.getJSON("/AjaxTest/getJsonSerializingJson", { ID: "22", FirstName: "C1", LastName: "HY1" }, function(json) { alert(json); $.each(json, function(item, value) { alert(item + ":" + json[item]); }); }); }); $("#ButJson5").click(function() { $.getJSON("/AjaxTest/getJsonDeSerializingJson", { json: '{"ID":201,"FirstName":"C","LastName":"HY","Man":true}' }, function(json) { alert(json); $.each(json, function(item, value) { alert(item + ":" + json[item]); }); }); }); //================================================================ $("#ButSerializing").click(function() { $.ajax({ type: "POST", url: "/AjaxTest/testSerializingJson", data: "ID=101&FirstName=C&LastName=HY&Man=false", async: true, cache: false, success: function(obj) { alert(obj); }, error: function() { alert("请求失败"); } }); }); $("#ButDeSerializing").click(function() { $.ajax({ type: "POST", url: "/AjaxTest/testDeSerializingJson", data: 'json={"ID":201,"FirstName":"C","LastName":"HY","Man":true}', async: true, cache: false, success: function(obj) { alert(obj.ID + obj.FirstName + obj.LastName + obj.Man); }, error: function() { alert("请求失败"); } }); }); $("#ButSerializingList").click(function() { $.ajax({ type: "POST", url: "/AjaxTest/serializingList", data: "", async: true, cache: false, success: function(obj) { alert(obj + "length:" + obj.length); $.each(obj, function() { $.each(this, function(item, value) { alert(item + ":" + json[item]); }); }); }, error: function() { alert("请求失败"); } }); });
Controllers 代码:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization.Json; using System.Web; using System.Web.Mvc; namespace MvcApplication.Controllers { public class Person { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public bool Man { get; set; } } public class AjaxTestController : Controller { #region ===============$.Ajax测试================= /// <summary> /// 测试返回对象 /// </summary> /// <param name="form"></param> /// <returns></returns> public JsonResult getPerson(FormCollection form) { Person p = new Person { ID = int.Parse(form["ID"]), FirstName = form["FirstName"], LastName = form["LastName"] }; return Json(p); } /// <summary> /// 经测试发现:当Global中定义{controller}/{action}/{id}时 /// 前台url?ID=3&FirstName=C&LastName=HY传到后台时ID值为"" /// 所以把Global中定义为{controller}/{action}/{uid} /// </summary> /// <param name="ID"></param> /// <param name="FirstName"></param> /// <param name="LastName"></param> /// <returns></returns> public JsonResult getPerson2(string ID, string FirstName, string LastName) { Person p = new Person { ID = int.Parse(ID), FirstName = FirstName, LastName = LastName }; return Json(p); } /// <summary> /// 测试返回字符串 /// </summary> /// <returns></returns> public ContentResult getString() { return Content("{id:'2',FirstName:'C',LastName:'HY'}"); } /// <summary> /// 测试返回json字符串 /// </summary> /// <returns></returns> public ContentResult getJsonString() { return Content("({id:'2',FirstName:'C',LastName:'HY'})"); } #endregion #region ==============$.getJSON(返回json格式测试)============ /// <summary> /// 经测试发现必须是双引号(")不能是单引号(') /// </summary> /// <param name="Code"></param> /// <param name="FirstName"></param> /// <param name="LastName"></param> /// <returns></returns> public ContentResult getJson1(string ID, string FirstName, string LastName) { return Content("{/"id/":1,/"name/":/"chy/",/"flag/":true}"); } /// <summary> /// 经测试发现必须是双引号(")不能是单引号(') /// </summary> /// <param name="Code"></param> /// <param name="FirstName"></param> /// <param name="LastName"></param> /// <returns></returns> public ContentResult getJson2(string ID, string FirstName, string LastName) { return Content("{/"id/":/"2/",/"name/":/"chy/"}"); } /// <summary> /// 经测试发现必须是双引号(")不能是单引号(') /// 产生错误前台没反应 /// </summary> /// <param name="Code"></param> /// <param name="FirstName"></param> /// <param name="LastName"></param> /// <returns></returns> public ContentResult getJson3(string ID, string FirstName, string LastName) { return Content("{'id':'3'}"); } #endregion #region============Newtonsoft.Json.dll(json序列化和反序列化测试)============= /// <summary> /// $.Ajax序列化Json /// </summary> /// <param name="ID"></param> /// <param name="FirstName"></param> /// <param name="LastName"></param> /// <returns></returns> public ContentResult testSerializingJson(FormCollection form) { Person p = new Person { ID = int.Parse(form["ID"]), FirstName = form["FirstName"], LastName = form["LastName"] }; return Content(Newtonsoft.Json.JsonConvert.SerializeObject(p)); } /// <summary> /// $.Ajax反序列化json /// </summary> /// <param name="form"></param> /// <returns></returns> public JsonResult testDeSerializingJson(FormCollection form) { Person p = Newtonsoft.Json.JsonConvert.DeserializeObject<Person>(form["json"].ToString()); return Json(p); } /// <summary> /// $.getJSON序列化Json /// </summary> /// <param name="ID"></param> /// <param name="FirstName"></param> /// <param name="LastName"></param> /// <returns></returns> public ContentResult getJsonSerializingJson(string ID, string FirstName, string LastName) { Person p = new Person { ID = int.Parse(ID), FirstName = FirstName, LastName = LastName }; return Content(Newtonsoft.Json.JsonConvert.SerializeObject(p)); } /// <summary> /// $.getJSON反序列化json /// </summary> /// <param name="form"></param> /// <returns></returns> public ContentResult getJsonDeSerializingJson(string json) { Person p = Newtonsoft.Json.JsonConvert.DeserializeObject<Person>(json); return Content(Newtonsoft.Json.JsonConvert.SerializeObject(p)); } #endregion #region================返回集合================ public JsonResult serializingList() { List<Person> ls = new List<Person>(); ls.Add(new Person { ID = 1, FirstName = "C", LastName = "HY", Man = false }); ls.Add(new Person { ID = 2, FirstName = "Z", LastName = "JJ", Man = true }); return Json(ls); } public JsonResult deSerializingList(string json) { List<Person> listP = new List<Person>(); List<string> listStr = json.Split(',').ToList<string>(); foreach (string s in listStr) { listP.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Person>(s)); } return Json(listP); } #endregion } }