Jquery的.post说解(一)

准备工作

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

Jquery的.post说解的更多相关文章

  1. jquery的css详解(二)

    jq的工具方法style用于设置样式,jq的实例方法css在设置样式时就是调用的它,接下来分析一下源码. jQuery.extend({ ............................ st ...

  2. jQuery.attr() 函数详解

    一,jQuery.attr()  函数详解: http://www.365mini.com/page/jquery-attr.htm 二,jQuery函数attr()和prop()的区别: http: ...

  3. jQuery 事件用法详解

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

  4. jQuery事件绑定、解绑、命名空间

    jQuery事件绑定.解绑.命名空间 <%@ page language="java" import="java.util.*" pageEncoding ...

  5. jQuery.ready() 函数详解

    jQuery.ready() 函数详解 ready()函数用于在当前文档结构载入完毕后立即执行指定的函数. 该函数的作用相当于window.onload事件. 你可以多次调用该函数,从而绑定多个函数, ...

  6. jquery inArray()函数详解

    jquery inarray()函数详解 jquery.inarray(value,array)确定第一个参数在数组中的位置(如果没有找到则返回 -1 ). determine the index o ...

  7. jQuery extend方法详解

    先说个概念的东西: jQuery为开发插件提拱了两个方法,分别是: $.fn.extend(item):为每一个实例添加一个实例方法item.($("#btn1") 会生成一个 j ...

  8. jQuery的观察者模式详解 转载

    jQuery的观察者模式详解 投稿:hebedich 本文主要是介绍了jQuery中on方法及trigger方法,以及围绕这个方法来体验的观察者模式,是篇非常不错的文章,对我们理解观察者模式很有帮助. ...

  9. 【转载】jQuery.extend 函数详解

    转载自:http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html jQuery.extend 函数详解 JQuery的e ...

随机推荐

  1. php中函数内使用static修饰变量

    首先理解静态变量的区别,声明一个函数test() function num(){ $a = 0; echo $a; $a++; } num();num();num(); //输出000 functio ...

  2. Entity Framework Power Tools安装和使用

    Entity Framework Power Tools是一个由EntityFramework开发小组提供的工具,它可以从现有数据库生成Fluent款式的Code First代码. 大致来说,这个工具 ...

  3. NOIP2015-stone(二分答案)

    这道题在考试时二分答案写炸了,结果得了20分.....同学有用贪心写的(对,贪心!!)都得了30,我感到了深深的恶意.这段时间在忙转语言,现在重新整理一下NOIP的题. 题目来源:vijos 题目如下 ...

  4. 深入mysql_fetch_row()与mysql_fetch_array()的区别详解

    这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种 ...

  5. Careercup - Facebook面试题 - 6321181669982208

    2014-05-02 09:40 题目链接 原题: Given a number N, write a program that returns all possible combinations o ...

  6. 《C++Primer》复习——with C++11 [3]

    1.我们的程序经常使用很多IO库,用来输入输出例如:istream(输入流)类型,提供输入操作. ostream(输出流)类型, 提供输出操作. cin, 一个istream对象,从标准输入读取数据. ...

  7. Android 自定义Toast,不使用系统Toast

    效果图: 创建Toast类 package com.example.messageboxtest; import android.app.Activity; import android.conten ...

  8. HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?

    // test02.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  9. ZedGrap控件绘制图表曲线

    问题描述: 使用C#中ZedGrap控件绘制图表曲线图 ZedGrap 介绍说明:     安装ZedGrap控件 ZedGraph控件dll文件: 添加ZedGraph控件,首先在新建立的C#图像工 ...

  10. AnkhSVN 安装

    为 visual Studio 2013 添加 AnkhSVN 步骤 到 https://ankhsvn.open.collab.net/downloads 下载 2.6x或以上 安装 AnkhSvn ...