• Jquery Ajax 复杂json对象提交到WebService


    在ajax的已不请求中,常常返回json对象。可以利用json.net给我们提供的api达到快速开发。

    例子:

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using Newtonsoft.Json;//这是json.net的命名空间

    public partial class _Default : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            StudentInfo info = new StudentInfo();
            info.Sname = "dld";
            info.Gender = "女";
            info.Age = 33;
            string str = JsonConvert.SerializeObject(info);
            Response.Write(str);
        }
    }
    public class StudentInfo
    {
        public string Sname { get; set; }
        public string Gender { get; set; }
        public byte Age { get; set; }
    }

     
     
     
     
     
     
     
     
     
    。使用get方式
    1.前台
                //复杂json对象提交
                var person = {'per':"{ 'id': 1, 'name': '张三', 'sex': '男' }"};
                $.ajax({
                    type: "get",
                    url: "JsonObject.asmx/GetPersonByObject",
                    data: person,
                    dataType: 'json',
                    contentType: 'application/json;charset=utf-8',
                    success: function (data) {
                        if (data.d == "1") {
                            $("#hello").text("服务器接收成功!");
                        }
                        else {
                            $("#hello").text("服务器接收数据失败!");
                        }
                    },
                    error: function () {
                        $("#hello").text("程序运行出错!");
                    }
                });
    2.后台
            [WebMethod]
            [ScriptMethod(ResponseFormat=ResponseFormat.Json, UseHttpGet=true)]
            public string GetPersonByObject()
            {
                string jsonStr = HttpContext.Current.Request["per"];
                Person per = jsonStr.JsonDeserialezer<Person>();//将json字符串反序列化
                if (per.Id == 1)
                {
                    return "1";
                }
                return "0";
            }
     
    二。使用post方式
    1.前台
                var person = "{'per':"{ 'id': 1, 'name': '张三', 'sex': '男' }"}";
                $.ajax({
                    type: "post",
                    url: "JsonObject.asmx/GetPersonByObject",
                    data: person,
                    dataType: 'json',
                    contentType: 'application/json;charset=utf-8',
                    success: function (data) {
                        if (data.d == "1") {
                            $("#hello").text("服务器接收成功!");
                        }
                        else {
                            $("#hello").text("服务器接收数据失败!");
                        }
                    },
                    error: function () {
                        $("#hello").text("程序运行出错!");
                    }
                });
    2.后台
            [WebMethod]
            public string GetPersonByObject(string per)
            {
              Person person=   per.JsonDeserialezer<Person>();//将json反序列化
              if (person.Id == 1)
              {
                  return "1";
              }
                return "0";
            }
     
    三。List类型json提交,post方式
    1.前台
                //复杂json对象提交2
                var person = "{'per':"[{ 'id': 1, 'name': '张三', 'sex': '男' },{ 'id': 2, 'name': '王芳', 'sex': '女' }]"}";
                $.ajax({
                    type: "post",
                    url: "JsonObject.asmx/GetPersonByOjects",
                    data: person,
                    dataType: 'json',
                    contentType: 'application/json;charset=utf-8',
                    success: function (data) {
                            $("#hello").text("就收前台数据人数:"+data.d);
                    },
                    error: function () {
                        $("#hello").text("程序运行出错!");
                    }
                });
    2.后台
            [WebMethod]
            public int GetPersonByOjects(string per)
            {
                List<Person> list = per.JsonDeserialezer<List<Person>>();//反序列化json字符串
                return list.Count;
            }
     
    四。List类型json提交,get方式
    1.前台
                var person = {'per':"[{ 'id': 1, 'name': '张三', 'sex': '男' },{ 'id': 2, 'name': '王芳', 'sex': '女' }]"};
                $.ajax({
                    type: "get",
                    url: "JsonObject.asmx/GetPersonByOjects",
                    data: person,
                    dataType: 'json',
                    contentType: 'application/json;charset=utf-8',
                    success: function (data) {
                            $("#hello").text("就收前台数据人数:"+data.d);
                    },
                    error: function () {
                        $("#hello").text("程序运行出错!");
                    }
                });
    2.后台
            [WebMethod]
            [ScriptMethod(ResponseFormat=ResponseFormat.Json,UseHttpGet=true)]
            public int GetPersonByOjects()
            {
                string per = HttpContext.Current.Request["per"];
                List<Person> list = per.JsonDeserialezer<List<Person>>();
                return list.Count;
            }
     
     
     
    http://blog.163.com/m13864039250_1/blog/static/213865248201373105642827/
     
  • 相关阅读:
    怎么继续程序员这条路
    深入理解Flash Player的应用程序域(Application Domains)(转载)
    网站策划未来趋势
    截取网页任意部分讨论
    如果你是一个有爱心的人或者即将成为一个有爱心的人 请投上一票吧
    prototype.js参考
    ASP.NETweb编程常用到的27个函数集
    C#实现web信息抓取
    12306火车票网站自动登录工具
    Flex和.net Webservice之间多层结构开发
  • 原文地址:https://www.cnblogs.com/yyzyou/p/7899218.html
Copyright © 2020-2023  润新知