`
coconut_zhang
  • 浏览: 541757 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论
阅读更多

通过AJAX异步减少网络内容传输,而JSON则可以把传输内容缩减到纯数据;然后利用jQuery内置的AJAX功能直接获得JSON格式的数据;在客户端直接绑定到数据控件里面,从而达到最优。
1.设计htm页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test2</title>

<script language="javascript" type="text/javascript" src="js/jquery-latest.pack.js"></script>

<script language="javascript" type="text/javascript" src="js/PageDate.js"></script>

</head>
<body>
<div>
   <div>
    <br />
    <input id="first" type="button" value=" << " /><input id="previous" type="button"
     value=" < " /><input id="next" type="button" value=" > " /><input id="last" type="button"
      value=" >> " />
    &nbsp;<span id="pageinfo"></span>
    <ul id="datas">
     <li id="template">
      <span id="OrderID">
       订单ID
      </span>/
      <span id="CustomerID">
      客户ID
      </span>
      <span id="EmployeeID">
      雇员ID
      </span>/
      <span id="OrderDate">
      订购日期
      </span>/
      <span id="ShippedDate">
      发货日期
      </span>/
      <span id="ShippedName">
      货主名称
      </span>/
      <span id="ShippedAddress">
      货主地址
      </span>/
      <span id="ShippedCity">
      货主城市
      </span>/
      <span id="more">
      更多信息
      </span>
     </li>
    </ul>
   </div>
   <div id="load" style="left: 0px; position: absolute; top: 0px; background-color: red">
    LOADING....
   </div>
   <input type="hidden" id="pagecount" />
</div>
</body>
</html>

注:ID属性比较重要,用于数据绑定。
2.使用jQuery编写AJAX请求文件

var pageIndex = 1
var pageCount = 0;

    $(function(){
   GetPageCount();//取得分页总数
   pageCount = parseInt($("#pagecount").val());//分页总数放到变量pageCount里
   $("#load").hide();//隐藏loading提示
        $("#template").hide();//隐藏模板
   ChangeState(0,1);//设置翻页按钮的初始状态
       
        bind();//绑定第一页的数据
       
        //第一页按钮click事件
        $("#first").click(function(){
            pageIndex = 1;
            ChangeState(0,1);
            bind();   
        });
       
        //上一页按钮click事件
        $("#previous").click(function(){
            pageIndex -= 1;
            ChangeState(-1,1);           
            if(pageIndex <= 1)
            {
                pageIndex = 1;
                ChangeState(0,-1);
            }
            bind();   
        });
      
        //下一页按钮click事件
        $("#next").click(function(){
            pageIndex += 1;
            ChangeState(1,-1);
            if(pageIndex>=pageCount)
            {
                pageIndex = pageCount;
                ChangeState(-1,0);
            }
            bind(pageIndex);           
        });
       
        //最后一页按钮click事件
        $("#last").click(function(){
            pageIndex = pageCount;
            ChangeState(1,0);
            bind(pageIndex);           
        });               
    });
   
    //AJAX方法取得数据并显示到页面上
    function bind()
    {
        $("[@id=ready]").remove();
        $("#load").show();
        $.ajax({
            type: "get",//使用get方法访问后台
            dataType: "json",//返回json格式的数据
            url: "Handler.ashx",//要访问的后台地址
            data: "pageIndex=" + pageIndex,//要发送的数据
            complete :function(){$("#load").hide();},//AJAX请求完成时隐藏loading提示
            success: function(msg){//msg为返回的数据,在这里做数据绑定
                var data = msg.table;
                $.each(data, function(i, n){
                    var row = $("#template").clone();
                    row.find("#OrderID").text(n.OrderID);
                    row.find("#CustomerID").text(n.CustomerID);
                    row.find("#EmployeeID").text(n.EmployeeID);
                    row.find("#OrderDate").text(ChangeDate(n.OrderDate));
                    if(n.RequiredDate !== undefined) row.find("#ShippedDate").text(ChangeDate(n.RequiredDate));
                    row.find("#ShippedName").text(n.ShipName);
                    row.find("#ShippedAddress").text(n.ShipAddress);
                    row.find("#ShippedCity").text(n.ShipCity);
                    row.find("#more").html("<a href=OrderInfo.aspx?id=" + n.OrderID + "&pageindex="+pageIndex+">&nbsp;More</a>");                   
                    row.attr("id","ready");//改变绑定好数据的行的id
                    row.appendTo("#datas");//添加到模板的容器中
                });
                $("[@id=ready]").show();
                SetPageInfo();
            }
        });
    }
   
    function ChangeDate(date)
    {
   return date.replace("-","/").replace("-","/");
    }
   
    //设置第几页/共几页的信息
    function SetPageInfo()
    {
   $("#pageinfo").html(pageIndex + "/" + pageCount);
    }
   
    //AJAX方法取得分页总数
    function GetPageCount()
    {
        $.ajax({
            type: "get",
            dataType: "text",
            url: "Handler.ashx",
            data: "getPageCount=1",
            async: false,
            success: function(msg){
     $("#pagecount").val(msg);
            }
        });
    }

//改变翻页按钮状态   
    function ChangeState(state1,state2)
    {
        if(state1 == 1)
        {           
            document.getElementById("first").disabled = "";
            document.getElementById("previous").disabled = "";
        }
        else if(state1 == 0)
        {           
            document.getElementById("first").disabled = "disabled";
            document.getElementById("previous").disabled = "disabled";
        }
        if(state2 == 1)
        {
            document.getElementById("next").disabled = "";
            document.getElementById("last").disabled = "";
        }
        else if(state2 == 0)
        {
            document.getElementById("next").disabled = "disabled";
            document.getElementById("last").disabled = "disabled";
        }
    }


3.利用JSON三方控件在服务器端获取JSON格式数据
    
<%@ WebHandler Language="C#" Class="jQueryJSON.Handler" %>

using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Configuration;
using System.Data.SqlClient;
using System.Text;
using System.Xml;
using NetServ.Net.Json;

namespace jQueryJSON
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/json/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Handler : IHttpHandler
    {
        readonly int PageSize = int.Parse(ConfigurationManager.AppSettings["PageSize"]);
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //不让浏览器缓存
            context.Response.Buffer = true;
            context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            context.Response.AddHeader("pragma", "no-cache");
            context.Response.AddHeader("cache-control", "");
            context.Response.CacheControl = "no-cache";

            string result = "";
            if (context.Request.Params["getPageCount"] != null) result = GetPageCount();
            if (context.Request.Params["pageIndex"] != null)
            {
                string pageindex = context.Request.Params["pageIndex"];
                //if (context.Cache.Get(pageindex) != null)
                //    result = context.Cache.Get(pageindex).ToString();
                //else
                //{
                //    result = GetPageData(context.Request.Params["pageIndex"]);
                //    context.Cache.Add(
                //        pageindex,
                //        result,
                //        null,
                //        DateTime.Now.AddMinutes(1),
                //        System.Web.Caching.Cache.NoSlidingExpiration,
                //        System.Web.Caching.CacheItemPriority.Default,
                //        null);
                //}
                result = GetPageData(context.Request.Params["pageIndex"]);
            }
            context.Response.Write(result);
        }

        private string GetPageData(string p)
        {
            int PageIndex = int.Parse(p);
            string sql;
            if (PageIndex == 1)
                sql = "select top " + PageSize.ToString() + " * from Orders order by OrderID desc";
            else
                sql = "select top " + PageSize.ToString() + " * from Orders where OrderID not in(select top " + ((PageIndex - 1) * PageSize).ToString() + " OrderID from Orders order by OrderID desc) order by OrderID desc";
            string dbfile = ConfigurationManager.ConnectionStrings["conn"].ToString();
            SqlConnection conn = new SqlConnection(dbfile);
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataTable dt = new DataTable("table");
            da.Fill(dt);
            return DataTableJson(dt);

        }

        private string GetPageCount()
        {
            string dbfile = ConfigurationManager.ConnectionStrings["conn"].ToString();
            SqlConnection conn = new SqlConnection(dbfile);
            SqlCommand cmd = new SqlCommand("select count(*) from Orders", conn);
            conn.Open();
            int rowcount = Convert.ToInt32(cmd.ExecuteScalar());
            conn.Close();
            return ((rowcount + PageSize - 1) / PageSize).ToString();
        }

        private string DataTable2Json(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("{\"");
            jsonBuilder.Append(dt.TableName);
            jsonBuilder.Append("\":[");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("\"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("\":\"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("\",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("]");
            jsonBuilder.Append("}");
            return jsonBuilder.ToString();
        }

        private string DataTableJson(DataTable dt)
        {
            JsonWriter writer = new JsonWriter();
            JsonObject content = new JsonObject();
            JsonArray Orders = new JsonArray();
            JsonObject Order;
            JsonObject OrderItem = new JsonObject();
           
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Order = new JsonObject();
                for(int j =0;j<dt.Columns.Count;j++)
                {       
                    Order.Add(dt.Columns[j].ColumnName, dt.Rows[i][j].ToString());
                }
                Orders.Add(Order);
            }
            content.Add(dt.TableName, Orders);
            content.Write(writer);

            writer = new IndentedJsonWriter();
            content.Write(writer);
           
            return writer.ToString();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

分享到:
评论

相关推荐

    jquery json 增删改查

    在IT行业中,jQuery、JSON以及Java的组合是构建动态Web应用程序的常见技术栈。这个"jquery json 增删改查"的项目是为了解决客户端与服务器端数据交互问题,特别是涉及到数据库操作时,如添加(Add)、删除(Delete)...

    SSH+jQuery+json 实现的Ajax操作,绝对精华,代码简练清晰,绝对能看明白

    在IT行业中,SSH、jQuery和JSON是Web开发中不可或缺的重要技术。这个压缩包中的资源,"SSH+jQuery+json 实现的Ajax操作,绝对精华,代码简练清晰,绝对能看明白",显然提供了一个使用这些技术实现Ajax级联操作的实例...

    jquery json s2sh项目实例

    在IT行业中,jQuery、JSON和S2SH(Struts2、Spring、Hibernate)是三个非常重要的技术组件,它们分别在Web开发的不同层面发挥着关键作用。让我们深入了解一下这些技术及其在实际项目中的应用。 首先,jQuery是一个...

    jquery json饼图插件

    **jQuery JSON饼图插件详解** 在Web开发中,数据可视化是至关重要的,它能帮助用户更好地理解复杂的数据。jQuery作为一个流行的JavaScript库,为开发者提供了丰富的功能和便利性。而"jQuery JSON饼图插件"正是这样...

    jQuery、JSON超强组合

    jQuery、JSON超强组合_files

    简单的SSH+JQuery+JSON例子

    在IT行业中,SSH、JQuery和JSON是三个非常重要的技术组件,它们在Web开发领域有着广泛的应用。SSH指的是Struts、Spring和Hibernate这三个Java Web开发框架的缩写,而JQuery是一个强大的JavaScript库,JSON则是一种轻...

    php jquery json无刷新提交查询实例

    PHP、jQuery和JSON的组合使得前后端数据交互变得更加高效且用户友好。本实例将详细介绍如何利用这三种技术实现一个无刷新的查询功能。 首先,PHP是服务器端的脚本语言,常用于处理HTML表单提交的数据和生成动态网页...

    jquery.json.min.2.3.0.js;json2.js

    综上所述,这些文件组合在一起,可以创建一个具备动态交互、日期选择、JSON数据处理功能的Web应用。jQuery库提供基础的DOM操作和事件处理,jQuery UI扩展了丰富的用户界面组件,而json2.js和jquery.json.min.2.3.0....

    ajax_struts_jquery_json级联菜单

    当服务器返回JSON数据后,jQuery解析这个JSON字符串,将其转换为JavaScript对象。然后,它遍历这些对象,动态地向HTML DOM(文档对象模型)添加新的选项,以构建级联菜单的子级部分。jQuery提供了丰富的DOM操作API,...

    struts2 spring2 ibatis2 jquery json 页面无刷新分页

    Struts2、Spring2、iBatis2、jQuery 和 JSON 是构建现代Web应用程序的重要技术栈。这个项目似乎演示了如何利用这些技术实现页面无刷新分页功能,这在提升用户体验和提高网页性能方面非常关键。下面我们将详细探讨...

    spring3 mvc restful freemarker jquery json

    在Spring3 MVC中,可以使用Jackson或Gson等库将Java对象转换为JSON字符串,然后通过Ajax请求传递给客户端,客户端再使用jQuery解析JSON数据,更新页面内容。 综上所述,这个整合架构提供了一种高效的Web开发模式,...

    jQuery JSON动态获取表格数据特效源码.zip

    本资源“jQuery JSON动态获取表格数据特效源码.zip”显然是一个包含示例代码的压缩包,旨在展示如何利用jQuery从JSON数据源动态地填充表格并实现特殊效果。下面将详细介绍涉及的知识点。 1. **jQuery库**:jQuery是...

    jquery Json Ajax搜索与分页效果代码.rar

    《jQuery、JSON与AJAX实现的搜索与分页效果详解》 在Web开发中,提供高效、友好的用户交互体验是至关重要的。其中,搜索功能和分页效果是常见的两个重要组成部分,它们可以让用户快速找到所需信息并有效地浏览大量...

    jquery与json和ajax的结合

    ### jQuery与JSON及AJAX的结合应用 #### 一、引言 随着Web技术的发展,前端框架和库的出现极大地简化了开发流程。其中,jQuery因其简洁易用的特点,在前端开发领域占据了重要的地位。本文将详细介绍如何利用jQuery...

    jquery对json的视频教程

    **jQuery与JSON:一个强大的组合** 在Web开发中,jQuery和JSON是两个不可或缺的重要工具。jQuery简化了JavaScript的DOM操作,事件处理,动画效果以及AJAX交互,而JSON(JavaScript Object Notation)作为一种轻量级...

    jquery+json实例

    在Web开发中,jQuery与JSON是一种常见的组合,它们共同为高效的数据交互和页面动态更新提供了强大的支持。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...

    struts2.1.8+json+jquery1.3实现ajax

    5. 数据处理:在jQuery的success回调函数中,可以使用`JSON.parse()`将JSON字符串解析为JavaScript对象,然后利用这些数据动态修改页面元素,实现无刷新更新。 6. 错误处理:同时,也要处理可能出现的错误,如网络...

    Jquery+JSON+WebService

    综上所述,jQuery、JSON和WebService的组合是现代Web开发中的重要工具,它们提供了高效、灵活的前端与后端数据交互方案。通过熟练掌握这些技术,开发者能够构建出响应式、用户体验良好的Web应用。在实际项目中,理解...

    Java+Servlet+Jquery+Json基础示例

    在IT行业中,Java、Servlet、Jquery和Json都是不可或缺的技术组件,它们在Web开发领域扮演着重要的角色。这里我们将深入探讨这些技术的基础及其在实际应用中的结合。 首先,Java是一种多平台、面向对象的编程语言,...

    jquery,json专家总结

    ### jQuery与JSON技术详解 #### 一、jQuery简介 jQuery是一种快速、简洁的JavaScript库,其设计宗旨是“Write Less, Do More”(写得更少,做得更多)。它极大地简化了HTML文档遍历、事件处理、动画以及Ajax交互等...

Global site tag (gtag.js) - Google Analytics