• 关于c#对象转JSON,页面使用javascript异步调用C#返回JSON字符串(eval函数转成对象)


    仅供自己学习备忘。欢迎拍砖指正。

    本文调用了Newtonsoft.Json.dll

    Newtonsoft.Json.XML 不知道有什么用,本文只是在下载的JSON.NET上面做了一些小例子,学习一下如何,将C#中的对象转成JSON格式的字符串,如何在页面将该串合理应用到页面中。

    主要通过一下三中颜色,三个部分调用就可以实现,相关调用。

    这之中使用了以前一些js调用服务器端脚本代码。

    页面代码:如下

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
      
        <script type="text/javascript" language="javascript">
           
            var xmlHttp;
           
            //创建XMLHTTP对象,判断浏览器是IE还是其他浏览器
            function createXMLHttp()
            {   //IE
                if(window.ActiveXObject)
                {
                    return new ActiveXObject("Microsoft.XMLHttp");
                }
                //其他遵循W3C标注的浏览器
                if(window.XMLHttpRequest)
                {
                    return new XMLHttpRequest();
                }
            }
           
            function getBook()
            {
            
                //调用createXMLHttp创建xmlHttp对象
                xmlHttp=createXMLHttp();
                //默认使用异步回发状态是TRUE,此时与服务器通讯有5状态
                xmlHttp.onreadystatechange=changeState;
                //通过GET方法发送请求道服务器 读取Books.xml数据,这里采用的是相对路径
                xmlHttp.open("GET","default.aspx",true)
                //在使用GET方法的时候.send方法法的数据类型为NULL ,具体参见Http通讯协议
                xmlHttp.send(null);
            }
            //在与服务器通讯过程中的5种状态
            function changeState()
            {
                if(xmlHttp.readyState==4) //当xmlHttp.readyState=4的时候说明通信完毕,
                {
                    if(xmlHttp.status==200)//虽然通讯完毕,但是还要考虑 请求的服务器页面是否存在,xmlHttp.status=200表示OK了 页面存在
                    {
                          ShowInfo();
                    }
                }    
            }
            function ShowInfo()
            {
                //将json字符转换成json对象使用JS的内置对象eval函数
               var info= eval('('+xmlHttp.responseText+')');
               var len=info.length;
               var div= document.getElementById("showInfo");

                 var td="";
                 for(var i=0;i<len;i++)
                 {
                  td +="<tr><td>"+info[i].EmployeeID+"</td><td>"+info[i].EmployeeName+"</td><td>"+info[i].EmployeeInfo+"</td></tr>"
               
                 }
                 div.innerHTML="<table  class='vtable'>"
                 +"<tr><td>用户ID</td><td>用户名</td><td>用户信息</td></tr>"
                 +td
                 +"</table>"; 
            }

        </script>
        <style>     
        .vtable{border-collapse:collapse;border:none;}
        .vtable td {border:solid #090 1px;}
        </style>
    </head>
    <body>
        <form id="form1" runat="server" >
        <div id="showInfo"  >
        </div>
        <script>
            getBook();
        </script>
        </form>
    </body>

    </html>

    以下是服务器端代码

    主要调用了 一下两个方法。

     public class Employee
    {
        private string[] employeeInfo;
       
        public int EmployeeID;
        public string EmployeeName;
        public string[] EmployeeInfo
        {
            get { return this.employeeInfo; }
            set { this.employeeInfo = value;}
        }
    }
    //获取JSON的方法主要是使用了using Newtonsoft.Json;命名空间中的JavaScriptConvert.SerializeObject();方法

     public string ToJSONString(int employeeID, string employeeName, string[] employeeInfo)
        {
            Employee employee = new Employee();
            employee.EmployeeID = employeeID;
            employee.EmployeeName = employeeName;
            employee.EmployeeInfo = employeeInfo;

            //为了写两个对象,多写了一个实例
            Employee employee1 = new Employee();
            employee1.EmployeeID = employeeID;
            employee1.EmployeeName = employeeName;
            employee1.EmployeeInfo = employeeInfo;
            IList<Employee> list=new List<Employee>();
            list.Add(employee);
            list.Add(employee1);

           

            return JavaScriptConvert.SerializeObject(list);
        }

    Defalut.aspx页面中 pageload下面 做了如下操作

      protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                 //这里主要是原JSON.net 使用了一个webserverice调用了相关方法,这方面根据个人需要可以自行修改。
                MyServ.WebService MyWebServ = new MyServ.WebService();
                string[] info = new string[] { "爱牛牛","12313","风动" };
                string employeeJSON = MyWebServ.ToJSONString(12, "大熊", info);

                Response.Write(employeeJSON);
                Response.End();
            }
        }

     具体实现,现在相关dll 即可实现。

  • 相关阅读:
    程序员面视题解析
    Forms身份验证
    梅花雨日历控件
    系统架构师学习笔记_第四章(下)
    系统架构师学习笔记_第三章
    系统架构师学习笔记_第六章(上)
    系统架构师学习笔记_第五章(下)
    系统架构师学习笔记_第一章
    系统架构师学习笔记_第四章(上)
    系统架构师学习笔记_第五章(上)
  • 原文地址:https://www.cnblogs.com/kaixinmenghuan/p/1941153.html
Copyright © 2020-2023  润新知