zoukankan      html  css  js  c++  java
  • Jquery读取.Net WebService Json数据

    鉴于上篇文章中 提到的Json优点:易读性、可扩展性和操作方便,接下来我们实现一个简单的例子Demo,场景是:查询商品信息;实现过程:Web程序通过Jquery 调用WebService,Web Service返回Json对象,成功调用后,对返回的JSon结果进行处理,下面我们看一下具体实现过程:

    1、 首先创建一个Aap.net web 应用程序,如下图:

    2、 添加实体类Product.cs到工程中,并且序列化,代码如下

    [Serializable]

        public class Product

        {

            public long ProductId { get; set; }

            public string ProductName { get; set; }

            public decimal Price { get; set; }

            public int Stock { get; set; }

        }

     

     

    3、 添加数据类ProductData.cs类到工程中,此类主要完成数据的查询操作,代码如下所示:

    public class ProductData

        {

            private List<Product> productList = new List<Product>()

            {

                new Product(){ProductId=1,ProductName="笔记本", Price=10000M, Stock=10},

                new Product(){ProductId=2,ProductName="格子绒长袖衬衫", Price=90M, Stock=20},

                new Product(){ProductId=3,ProductName="纯棉长袖T恤", Price=99M, Stock=40},

                new Product(){ProductId=4,ProductName="炫彩T恤", Price=67M, Stock=30},

                new Product(){ProductId=5,ProductName="直筒裤男牛仔裤", Price=100M, Stock=20},

                 new Product(){ProductId=6,ProductName="[无印严选]纯色V领长袖T恤", Price=67M, Stock=50},

                new Product(){ProductId=7,ProductName="英伦学院派马夹", Price=44M, Stock=40},

                new Product(){ProductId=8,ProductName="纯棉连帽宽松卫衣", Price=66M, Stock=30},

                new Product(){ProductId=9,ProductName="纯棉多口袋工装裤", Price=80M, Stock=990},

                new Product(){ProductId=10,ProductName="假两件长袖T恤", Price=89M, Stock=30},

            };

            /// <summary>

            /// 查询所有商品

            /// </summary>

            /// <returns>所有商品</returns>

            public List<Product> GetProducts()

            {

                return productList;

            }

            /// <summary>

            /// 根据商品Id查询商品

            /// </summary>

            /// <param name="id">商品编号</param>

            /// <returns>商品</returns>

            public Product GetProductById(long id)

            {

                return productList.FirstOrDefault(p => p.ProductId == id);

            }

            /// <summary>

           /// 根据商品名称查询商品

            /// </summary>

            /// <param name="id">商品名称</param>

            /// <returns>商品</returns>

            public List<Product> GetProductByName(string name)

            {

                return productList.Where(p => p.ProductName == name).ToList();

            }

     

    4、 添加ASP.NET Web Service 到工程中,命名为ProductServic.asmx,如下图:

    此Web Service调用ProductData类,完成数据查询操作,具体代码如下:

        /// <summary>

        /// Summary description for ProductService

        /// </summary>

        [WebService(Namespace = "http://tempuri.org/")]

        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

        [System.ComponentModel.ToolboxItem(false)]

        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.

       [System.Web.Script.Services.ScriptService]

        public class ProductService : System.Web.Services.WebService

        {

     

            private ProductData dataSource

            {

                get

                {

                    return new ProductData();

                }

            }

     

            /// <summary>

            /// Get the Products

            /// </summary>

            /// <returns></returns>

            [WebMethod]

            [ScriptMethod(ResponseFormat=ResponseFormat.Json,UseHttpGet=true)]

            public List<Product> GetProducts()

            {

                return dataSource.GetProducts();

            }

     

            /// <summary>

            /// 根据商品Id查询商品

            /// </summary>

            /// <param name="object">商品编号</param>

            /// <returns>商品</returns>

            [WebMethod]

            [ScriptMethod(ResponseFormat=ResponseFormat.Json,UseHttpGet=true)]

            public Product GetProductById(object id)

            {

                Product p = null;

                if (id!=null)

                {

                    int productId = 0;

                    int.TryParse(id.ToString(),out productId);

                    p = dataSource.GetProductById(productId);

                }

                return p;

            }

     

            /// <summary>

            /// 根据商品名称查询商品

            /// </summary>

            /// <param name="id">商品名称</param>

            /// <returns>商品</returns>

            [WebMethod]

            [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]

            public List<Product> GetProductById(string name)

            {

                return dataSource.GetProductByName(name);

            }

        }    }

    注:

    Ø 引用命名空间:System.Web.Script.Services.ScriptService

    Ø 给方法添加注解:[ScriptMethod(ResponseFormat = TheResponseFormat, UseHttpGet = true/false)]

    ResponseFormat:方法要返回的类型,一般为Json或者XML

    UseHttpGet:true表示“Get”可以访问此方法

    5、 在Defualt.aspx页面引用Jquery类库

    引用Google网络jquery 类库http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js

    或者本地类库<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>

    6、 在Defualt.aspx页添加如下HTML代码:

    <div id="listContainer" class="container">

            <div id="title">

                Product List</div>

            <table id="productList">

                <thead>

                </thead>

                <tbody>

                </tbody>

            </table>

    </div>

    Jquery会动态向id=ProductList的Table中添加查询到的数据

    7、 在Defualt.aspx页添加如下样式代码:

     <style type="text/css">

            body

            {

                font-family: Verdana,Arial;

            }

            .container

            {

                width: auto;

                padding: 1.5em;

                margin: 1em;

            }

            .container #title

            {

                font-size: 2em;

                width: 100%;

                border-bottom: groove 0.5em blue;

            }

            #productList

            {

                width: 100%;

                border-collapse: collapse;

            }

            #productList td

            {

                padding: 1em;

                border-style: solid;

                border-width: 1px;

                border-color: Blue;

                margin: 0;

            }

            thead td

            {

                background-color: Yellow;

            }

            tbody tr:hover

            {

                background-color: #aaa;

            }

       </style>

     

    8、 使用Jquery的Ajax方法调用Web Service中方法,代码如下:

    $(document).ready(function () {

                // Get Product list        

                $.ajax({

                    type: "GET",

                    contentType: "application/json; charset=utf-8",

                    url: "ProductService.asmx/GetProducts",

                    dataType: "json",

                    success: insertCallback,

                    error: errorCallback

                });

            function insertCallback(result) {

                $("#productList").find("tr:gt(0)").remove();

                if (result["d"].length > 0) {

                    $('#productList > thead:last').append('<tr><td>商品名称</td><td>价格</td><td>库存量</td></tr>');

                }

                for (var i = 0; i < result["d"].length; i++) {

                    var product = eval(result["d"][i]);

                    $('#productList > tbody:last').append('<tr onclick="ShowDetail(' + product.ProductId + ')"><td>' +

                    product.ProductName + '</td><td>' +

                    product.Price + '</td><td>' +

                    product.Stock + '</td></tr>');

                }

            }

            function errorCallback(XMLHttpRequest, textStatus, errorThrown) {

                alert(errorThrown + ':' + textStatus);

            }

    注:

    $.ajax方法有以下属性:

    Type:    HTTP请求方法,在做查询操作时,经常用Get方法

    contentType:在请求头部的类型,由于Web Service返回Json对象,此处值为:application/json; charset=utf-8

    url:请求的URL地址

    dataTyep:定义返回的类型

    Success:调用成功时,要执行的方法

    error:调用失败是,要执行的方法

    9、 执行程序,效果如下:

    至此,使用Jquery查询Web Service返回的JSon对象已经完成

    源代码下载地址:https://files.cnblogs.com/ywqu/JsonWebService.rar

    作者:灵动生活

    出处:http://www.cnblogs.com/ywqu

     

  • 相关阅读:
    Ubuntu配置sublime text 3的c编译环境
    ORA-01078错误举例:SID的大写和小写错误
    linux下多进程的文件拷贝与进程相关的一些基础知识
    ASM(四) 利用Method 组件动态注入方法逻辑
    基于Redis的三种分布式爬虫策略
    Go语言并发编程总结
    POJ2406 Power Strings 【KMP】
    nyoj 会场安排问题
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    Java的String、StringBuffer和StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/ziyan22/p/1865155.html
Copyright © 2011-2022 走看看