zoukankan      html  css  js  c++  java
  • Jquery的.post说解(一)

    准备工作

    ·Customer

    public class Customer
    {
        
    public int Unid { getset; }
        
    public string CustomerName { getset; }
        
    public string Memo { getset; }
        
    public string Other { getset; }
    }

     

    jQuery.post( url, [data][callback][type] )

     

    ·url:加载页的地址

    ·data(optional)k/v对或序列化的字符串(.serialize()),参数

    ·callbakc(optional):数据成功加载后的执行函数

    ·type(optional):请求返回的数据格式,串型

     

    (一)ashx文件

    1)请求单实体数据

    ·Ashx文件,这里不对返回的数据做显式的序列化。 

    Customer customer = new Customer 
      { Unid 
    = 1, CustomerName = "宋江", Memo = "天魁星", Other = "黑三郎" };

    context.Response.Write(customer);

    ·ajax post

    function GetCustomer_Ashx() {
        $.post(
        
    "webdata/post_1.ashx",
        
    function(data) {
            
    var sx = $.JsonToObject(data);
            
    var tt = "";
            $.each(sx, 
    function(k, v) {
                tt 
    += k + "" + v + "<br/>";
            })
            $(
    "#divmessage").html(tt);
        },
        
    "json"
    );}

    2)请求实体集合

    ·ashx文件

    Customer customer = new Customer 
        { Unid 
    = 1, CustomerName = "宋江", Memo = "天魁星", Other = "黑三郎" };

    Customer customer2 
    = new Customer 
        { Unid 
    = 2, CustomerName = "吴用", Memo = "天机星", Other = "智多星" };
     

        List
    <Customer> _list = new List<Customer>();
        _list.Add(customer);
        _list.Add(customer2);
        
    string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(_list);

        context.Response.Write(strJson);

    ·ajax post

    function GetCustomer_AshxList() {
        $.post(
        
    "webdata/post_1.ashx",
        
    function(data) {
            
    var jsonObjects = $.jsonToObject(data);
            
    var tt = "";
            $.each(jsonObjects, 
    function(k, v) {
                $.each(v, 
    function(kk, vv) {
                    tt 
    += kk + "" + vv + "<br/>";
                });
            });

            $(
    "#divmessage").html(tt);
        },
        
    "json"
        );
    }

    3)带参数的请求

    ·ashx文件

    在前者基础上添加了对请求参数的获取语句,并添加了linq查询

    int iCustomerId = Convert.ToInt32(context.Request["iUnid"]);
            var cus 
    = from q in _list
                      
    where q.Unid == iCustomerId
                      select q;

    string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(cus);

    ·ajax post

    function GetCustomer_AshxWithPara() {
        $.post(
        
    "webdata/post_1.ashx",
        { iUnid: 
    1 },
        
    function(data) {
            
    var tt = "";
            $.each(data, 
    function(k, v) {
                $.each(v, 
    function(kk, vv) {
                    tt 
    += kk + "" + vv + "<br/>";
                });
            });
            $(
    "#divmessage").html(tt);
        },
        
    "json"
    );}

    注意,这里返回的直接是json对象[object,object],可以直接解析。

    这种参数传递的方法是以k/v对格式传递,post还有一种方式,那就是.serialize()之后的字串。

    (二)Web Service

    1Hello

    ·ws

    [WebMethod]
    public string HelloWorld()
    {
        
    return "Hello World";
    }

    ·ajax post

    function WebService_Hello() {
        $.post(
        
    "post_1.asmx/HelloWorld",
        
    function(data) {
            alert(data.text);
            $(
    "#divmessage").html(data);
        },
        
    "json"
    );}

    这个web方法返回一个单独的字串。这是一个纯正的字串,对于客户端来说,这是一个object对象,但也可以理解为一个[object,object]对象,而它完整的数据格式可以理解为:{text: "Hello World"}

    所以这里对它进行访问,可以如下:

    ·data.text 这种方式对应于Object.Property

    ·data["text"] 这种方式对应于Object["key"]

    2json

    ·ws

    [WebMethod]
    public string HelloWorld_Json()
    {
        
    string strJson=
          
    @"{Unid:1,CustomerName:""宋江"",Memo:""天魁星"",Other:""黑三郎""}";
        
    return strJson;
    }

    ·ajax post

    function WebService_HelloJsonString() {
        $.post(
        
    "post_1.asmx/HelloWorld_Json",
        
    function(data) {
            
    var jsonString = data.text;
            
    var jsonObject = $.jsonToObject(jsonString);
            
    var tt = "";
            $.each(jsonObject, 
    function(k, v) {
                tt 
    += k + "" + v + "<br/>";
            })

            $(
    "#divmessage").html(tt);
        },
        
    "json"
    );}

    虽然服务方法返回的是string类型的数据:

    {Unid:1,CustomerName:"宋江",Memo:"天魁星",Other:"黑三郎"}

    但客户端得到的数据却是object类型,可以理解为[object,object],也就是

    {text:’{Unid:1,CustomerName:"宋江",Memo:"天魁星",Other:"黑三郎"}’}

    客户端请求到的数据取到json字串,然后转换为json对象,后进行解析。

    所以,在请求web服务方法时,如果方法返回字串类型,先要通过data.text得到做为唯一k/v对的v值,也就是json字串,然后再进行下一步操作。

    3)通过串行化返回json字串的web方法

    ·ws

    [WebMethod]
    public string GetCustomer_Json()
    {
        Customer customer 
    = new Customer
          { Unid 
    = 1, CustomerName = "宋江", Memo = "天魁星", Other = "黑三郎" };

        
    string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(customer);
        
    return strJson;
    }

    ·ajax post

    function WebService_CustomerJsonString() {
        $.post(
        
    "post_1.asmx/GetCustomer_Json",
        
    function(data) {
            
    var jsonString = data.text;
            
    var jsonObject = $.jsonToObject(jsonString);
            
    var tt = "";
            $.each(jsonObject, 
    function(k, v) {
                tt 
    += k + "" + v + "<br/>";
            })
            $(
    "#divmessage").html(tt);
        },
        
    "json"
    );}

    这个方法与(2)相同道理。

    4)客户集

    ·ws

    [WebMethod]
    public string GetCustomerList_Json()
    {
        Customer customer 
    = new Customer 
           { Unid 
    = 1, CustomerName = "宋江", Memo = "天魁星", Other = "黑三郎" };

        Customer customer2 
    = new Customer 
           { Unid 
    = 2, CustomerName = "吴用", Memo = "天机星", Other = "智多星" }; 

            List
    <Customer> _list = new List<Customer>();
            _list.Add(customer);
            _list.Add(customer2); 

            
    string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(_list);
            
    return strJson;
    }

    ·ajax post

    function WebService_CustomerListJsonString() {
        $.post(
        
    "post_1.asmx/GetCustomerList_Json",
        
    function(data) {
            
    var jsonString = data.text;
            
    var jsonObject = $.jsonToObject(jsonString);
            
    var tt = "";
            $.each(jsonObject, 
    function(k, v) {
                $.each(v, 
    function(kk, vv) {
                    tt 
    += kk + "" + vv + "<br/>";
                });
            });
            $(
    "#divmessage").html(tt);
        },
        
    "json"
    );}

    其实得到了json字串,也就能正常解析出来。主要是理解返回的数据对象的格式。

    5)带参数的ws

    ·ws

    [WebMethod]
    public string GetCustomerList_JsonPara(int iUnid)
    {
        Customer customer 
    = new Customer 
           { Unid 
    = 1, CustomerName = "宋江", Memo = "天魁星", Other = "黑三郎" };

        Customer customer2 
    = new Customer 
           { Unid 
    = 2, CustomerName = "吴用", Memo = "天机星", Other = "智多星" }; 

            List
    <Customer> _list = new List<Customer>();
            _list.Add(customer);
            _list.Add(customer2); 

            var cus 
    = from q in _list
                      
    where q.Unid == iUnid
                      select q; 

            
    string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(cus);
            
    return strJson;
    }

     ·ajax post

    function WebService_CustomerListJsonStringWithPara() {
        $.post(
    "post_1.asmx/GetCustomerList_JsonPara",
        {iUnid:
    2},
        
    function(data) {
            
    var jsonString = data.text;
            
    var jsonObject = $.jsonToObject(jsonString);
            
    var tt = "";
            $.each(jsonObject, 
    function(k, v) {
            $.each(v, 
    function(kk, vv) {
            tt 
    += kk + "" + vv + "<br/>";
            });
            });
            $(
    "#divmessage").html(tt);        
        }
     );}

    带参数的post时,post函数的type部分不能以json格式请求返回。可以省略。

     

  • 相关阅读:
    【LINUX编程】一个基于C/S结构的简单通讯程序
    【LINUX内核】LINUX内核编译
    C语言中的auto, static, const, extern, register, restrict, volatile 关键字
    【LINUX编程】Makefile的基本介绍
    【LINUX编程】关于man的详细用法
    DOTween动画插件详解
    cas server端的loginwebflow详细流程
    Linux SSH远程文件/目录传输命令scp
    C#去掉字符串中特定ASC码字符
    解決 Flash 蓋住彈出目錄的方法(转载)
  • 原文地址:https://www.cnblogs.com/jams742003/p/1634945.html
Copyright © 2011-2022 走看看