准备工作

·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):请求返回的数据格式,串型

(一)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

(1)Hello

·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"]

(2)json串

·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格式请求返回。可以省略。

转载于:https://www.cnblogs.com/jams742003/archive/2009/12/29/1634945.html

Jquery的.post说解(一)相关推荐

  1. jQuery数组处理详解(含实例演示)

    jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的 ...

  2. [zz]jQuery.extend 函数详解

    JQuery的extend扩展方法:       Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解.       一.Jquery的扩 ...

  3. jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()

    原文:http://www.codeceo.com/article/jquery-plugin-develop.html 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我 ...

  4. jQuery选择器代码详解(一)——Sizzle方法

    对jQuery的Sizzle各方法做了深入分析(同时也参考了一些网上资料)后,将结果分享给大家.我将采用连载的方式,对Sizzle使用的一些方法详细解释一下,每篇文章介绍一个方法. 若需要转载,请写明 ...

  5. jQuery 选择器(checked)详解

    jQuery 选择器(:checked)详解 jQuery的:checked选择器用于匹配所有选中的表单域元素,将其封装为jQuery对象并返回. 选中的表单域是指具有checked属性的radio和 ...

  6. jquery方法属性详解

    jquery方法属性详解! 1.jquery简介 jquery是什么,作用是什么? jquery用来简化js操作DOM元素 jquery不能用DOM的方法,DOM不能用jquery的方法 各种选择器的 ...

  7. jQuery队列控制方法详解queue()/dequeue()/clearQueue()

    jQuery核心中, 有一组队列控制方法, 这组方法由queue()/dequeue()/clearQueue()三个方法组成, 它对需要连续按序执行的函数的控制可以说是简明自如, 主要应用于anim ...

  8. JQuery自定义插件详解之Banner图滚动插件

      前  言 JRedu JQuery是什么相信已经不需要详细介绍了.作为时下最火的JS库之一,JQuery将其"Write Less,Do More!"的口号发挥的极致.而帮助J ...

  9. jQuery 事件用法详解

    目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jquery中文文档 简介 jque ...

  10. jquery ui tabs详解(中文) 【转载】

    1 属性 1.11 ajaxOptions,当选项卡加载内容时,添加一个ajax选项.只有ajax时,添加的ajax选项才起作用.默认值为null.上面的例子中,添加了beforeSend和succe ...

最新文章

  1. android system window,Android控件的fitSystemWindows属性
  2. Deepmind最新研究:从图表示学习看算法推理
  3. 解决在AX 2009中删除公司时提示:未授权用户##删除表“DEL_PBATRANSLATECONSISTOF”中的记录...
  4. 云服务器怎么拷贝和删除文件,怎样给云服务器拷贝文件
  5. python中多对多替换_Python对指定文件内容进行全局替换
  6. 使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天
  7. EMCA创建em资料库时报错
  8. android sdk dns,Android SDK 导入
  9. Office批量打印助手V8.5最新版
  10. 事业心是成功的“动力源”
  11. 数字电路——流水灯(二)_往返流水灯
  12. 【Verilog】加法器减法器的设计
  13. 腾讯敏感词汇大全_有创意的饰品店名,独一无二的饰品店名大全
  14. mysql配置主从复制和mysql多实例配置主从复制
  15. C++围棋小游戏1.1
  16. mysql数据库管理人员_dba数据库管理员的职责是什么
  17. NotionAI - 文档领域的ChatGPT,一款 AI 加持的在线文档编辑和管理工具
  18. 一个程序员的水平能差到什么程度?网友:他是怎么进的公司的?
  19. 苹果cms播放页html,苹果cms播放器添加教程
  20. [yzhpdh多读paper]Social network analysis:An overview

热门文章

  1. CSS自适应宽度圆角按钮
  2. 红帽中出现”This system is not registered with RHN”的解决方案
  3. 无主键的Hibernate配置
  4. Linux的磁盘管理
  5. linux进程--exec详解(四)
  6. 日志管理系统的重要性---怼死你的客户
  7. 强化学习:Policy-based方法Part2
  8. PL/SQL developer执行的sql文件编码
  9. 用 easy-json-schema 代替 json-schema 吧
  10. JMF介绍之媒体框架二