欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » Html » 正文

热门阅读

jQuery的.post

创建时间:2011年08月25日 17:10  阅读次数:(4502)
分享到:
一、准备工作·Customer类
public class Customer
{
    public int Unid { get; set; }
    public string CustomerName { get; set; }
    public string Memo { get; set; }
    public string Other { get; set; }
}


二、定义:jQuery.post( url, [data], [callback], [type] )
·url:加载页的地址
·data(optional):k/v对或序列化的字符串(.serialize()),参数
·callbakc(optional):数据成功加载后的执行函数
·type(optional):请求返回的数据格式,串型
(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)带参数的请求

在前者基础上添加了对请求参数的获取语句,并添加了linq查询
·ashx文件
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 
(1)Hello
 

[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"]
(2)json串
[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方法
 

[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)客户集
[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)带参数
[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格式请求返回。可以省略。
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Zxw

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 28+45=? 的结果(结果是:73)
结  果: