zoukankan      html  css  js  c++  java
  • javascript, json, xml

    在网络编程中,我们经常需要用到javascript,这些客户端脚本又经常需要与服务端进行异步的通讯,提交并接收数据。下面这个例子演示了如何设计服务,如何编写脚本

    1. 服务端,这是一个ashx文件

    需要添加两个引用 System.Runtime.Serialization和System.ServiceModel.Web

    using System.Web;
    using System.Web.Services;
    using System.Runtime.Serialization.Json;
    using System.Runtime.Serialization;
    using System.IO;
    using System.Text;
    
    
    namespace DynamicTableSample
    {
        /// <summary>
        /// $codebehindclassname$ 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        public class Test : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                //解析客户端传过来的数据
                var c = context.Request["data"];
                var ser = new DataContractJsonSerializer(typeof(Customer));
                Customer customer =ser.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(c))) as Customer;//反序列化,将字符串转换为对象
    
    
                //返回结果
                ActionResult result = new ActionResult() { ResultCode = 200, Message = "该操作已经成功" };
                var ser2 = new DataContractSerializer(typeof(ActionResult));
                //直接返回xml格式的内容。返回xml其实是更好的,因为这个服务才更有通用性。
                ser2.WriteObject(context.Response.OutputStream, result);
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    
        public class Customer {
            
            public string CustomerID { get; set; }
            public Employee[] Employees { get; set; }
            public class Employee
            {
                public int Id { get; set; }
                public string Name { get; set; }
            }
        }
    
        public class ActionResult
        {
            public int ResultCode { get; set; }
            public string Message { get; set; }
        }
    
    
    }
    
    2. 客户端
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestJson.aspx.cs" Inherits="DynamicTableSample.TestJson" %>
    
    <!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">
    <head runat="server">
        <title></title>
    
        <script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
        <script src="json2.js" type="text/javascript"></script>
        
        <script type="text/javascript">
            function Test() {
                var arr = new Array();
                var o = new Object();
                o.Id = 1;
                o.Name = "chenxizhang";
                arr.push(o);
                arr.push(o);
                arr.push(o);
    
                var customer = new Object();
                customer.CustomerID = "Microsoft";
                customer.Employees = arr;
    
                $("#msg").html(JSON.stringify(customer));
    
                $.post("Test.ashx", "data=" + JSON.stringify(customer), function(result) {
                    alert($(result).find("Message").text());//这里可以解析xml
                });
    
                $.ajax({
                    type: "post",
                    data: "data=" + JSON.stringify(customer),
                    url: "Test.ashx",
                    success: function(result) {
                        alert(result);//这是返回xml
                    }
                });
                
                //var o = JSON.parse('{"Name":"chenxizhang"}');
                //alert(o.Name);
            }
        </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="msg">
        
        </div>
        </form>
        
        <input type="button" value="测试" onclick="Test()" />
    </body>
    </html>
    
    image 
    image 
    image 
     
  • 相关阅读:
    深入浅出Redis(三)高级特性:管道
    CxImage的编译及简单使用举例
    [Zlib]_[0基础]_[使用zlib库压缩文件]
    java 实现打印当前月份的日历
    hdu 5087 Revenge of LIS II ( LIS ,第二长子序列)
    spring理解一
    poj 3181 Dollar Dayz (整数划分问题---递归+DP)
    android键盘事件
    Linux编程环境介绍(2) -- shell(Bash) 介绍
    iphone开发中数据持久化之——嵌入式SQLite(三)
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1646255.html
Copyright © 2011-2022 走看看