0

0

jquery ajax json 综合应用实例

php中文网

php中文网

发布时间:2016-06-01 09:54:41

|

1353人浏览过

|

来源于php中文网

原创

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

1.设计htm页面

 
 
 
test2 
 
 
  
 
 

  • 订单ID / 客户ID 雇员ID / 订购日期 / 发货日期 / 货主名称 / 货主地址 / 货主城市 / 更多信息
LOADING....
////注:ID属性比较重要,用于数据绑定。

 

自学 PHP、MySQL和Apache
自学 PHP、MySQL和Apache

本书将PHP开发与MySQL应用相结合,分别对PHP和MySQL做了深入浅出的分析,不仅介绍PHP和MySQL的一般概念,而且对PHP和MySQL的Web应用做了较全面的阐述,并包括几个经典且实用的例子。 本书是第4版,经过了全面的更新、重写和扩展,包括PHP5.3最新改进的特性(例如,更好的错误和异常处理),MySQL的存储过程和存储引擎,Ajax技术与Web2.0以及Web应用需要注意的安全

下载

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(" More");
                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 
{ 
///  
/// $codebehindclassname$ 的摘要说明 
///  
[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"]; 
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

以上是jquery ajax json 综合应用实例。

相关专题

更多
PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

11

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

70

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

108

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

152

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

58

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

44

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

20

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

131

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

45

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
jQuery 教程
jQuery 教程

共42课时 | 4.4万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 9.6万人学习

tp6+adminlte搭建通用后台
tp6+adminlte搭建通用后台

共39课时 | 5.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号