jquery跨域获取数据以及分页
2011-01-19 17:37
295 查看
今天做了一个jquery跨域获取josn数据的功能,同时对获取的数据进行分页。看代码:
html 代码:
代码
<%@ WebHandler Language="C#" Class="GetpfData" %>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public class GetpfData : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string hid = context.Request["hid"].ToString();
string hname =HttpUtility.UrlDecode(context.Request["hName"].ToString());
int num=Convert.ToInt32(context.Request["pagenum"].ToString());
int page=Convert.ToInt32(context.Request["p"].ToString());
SqlParameter[] paremeter = {
new SqlParameter("@hid",SqlDbType.Int)
};
paremeter[0].Value = hid;
int id = (int)SqlHelper.ExecuteScalar(CommandType.Text, "select ID from Hero where hid=@hid",paremeter);
int count = (int)SqlHelper.ExecuteScalar("select count(*) from Skin where Name=" + id);//查询总记录数;
//查询要显示的数据;
string sql = "select top " + num + " * from Skin where Name="+id+" and id not in(select top " + num * (page-1) + " id from Skin where Name="+id+" order by id desc) order by id desc";
DataSet ds = SqlHelper.ExecuteDataset(sql);
//构造json格式;
StringBuilder sb = new StringBuilder();
sb.Append("[");
for (int i = 0; i <ds.Tables[0].Rows.Count; i++)
{
sb.Append("{");
sb.AppendFormat("'ID':'{0}','title':'{1}','title1':'{2}','pic':'{3}','score':'{4}','hname':'{5}','page':'{6}'", ds.Tables[0].Rows[i]["id"].ToString(), ds.Tables[0].Rows[i]["SkinTitle"].ToString().Length > 9 ? StringHelper.GetLeftStr(ds.Tables[0].Rows[i]["SkinTitle"].ToString(), 9) : ds.Tables[0].Rows[i]["SkinTitle"].ToString(), ds.Tables[0].Rows[i]["SkinTitle"].ToString(), ds.Tables[0].Rows[i]["Skinpic"].ToString(), ds.Tables[0].Rows[i]["Score"].ToString(), hname, page);
sb.Append("}");
if (i < ds.Tables[0].Rows.Count - 1)
{
sb.Append(",");
}
}
sb.Append("]");
string data = sb.ToString();
string callback = context.Request.QueryString["jsoncallback"];
data = "{d:" + data + ",count:" + count + "}";
context.Response.Write(callback+"("+data+")");
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
思路很简单,就是每次查询给后台传入要查询的差数,再把Response.Write()出来的数据进行重新的展示。
这样做有很大问题的,如果访问量非常大的话,服务器会受不了的。解决方法:
1、加上缓存。
2、将要查询的json数据生成js文件,从js文件查询需要的数据。(但这样数据的实时更新就不行了的)。
对要处理的数据更新是很快情况下建议选择第二种方法是很不错的。
html 代码:
代码
<%@ WebHandler Language="C#" Class="GetpfData" %>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public class GetpfData : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string hid = context.Request["hid"].ToString();
string hname =HttpUtility.UrlDecode(context.Request["hName"].ToString());
int num=Convert.ToInt32(context.Request["pagenum"].ToString());
int page=Convert.ToInt32(context.Request["p"].ToString());
SqlParameter[] paremeter = {
new SqlParameter("@hid",SqlDbType.Int)
};
paremeter[0].Value = hid;
int id = (int)SqlHelper.ExecuteScalar(CommandType.Text, "select ID from Hero where hid=@hid",paremeter);
int count = (int)SqlHelper.ExecuteScalar("select count(*) from Skin where Name=" + id);//查询总记录数;
//查询要显示的数据;
string sql = "select top " + num + " * from Skin where Name="+id+" and id not in(select top " + num * (page-1) + " id from Skin where Name="+id+" order by id desc) order by id desc";
DataSet ds = SqlHelper.ExecuteDataset(sql);
//构造json格式;
StringBuilder sb = new StringBuilder();
sb.Append("[");
for (int i = 0; i <ds.Tables[0].Rows.Count; i++)
{
sb.Append("{");
sb.AppendFormat("'ID':'{0}','title':'{1}','title1':'{2}','pic':'{3}','score':'{4}','hname':'{5}','page':'{6}'", ds.Tables[0].Rows[i]["id"].ToString(), ds.Tables[0].Rows[i]["SkinTitle"].ToString().Length > 9 ? StringHelper.GetLeftStr(ds.Tables[0].Rows[i]["SkinTitle"].ToString(), 9) : ds.Tables[0].Rows[i]["SkinTitle"].ToString(), ds.Tables[0].Rows[i]["SkinTitle"].ToString(), ds.Tables[0].Rows[i]["Skinpic"].ToString(), ds.Tables[0].Rows[i]["Score"].ToString(), hname, page);
sb.Append("}");
if (i < ds.Tables[0].Rows.Count - 1)
{
sb.Append(",");
}
}
sb.Append("]");
string data = sb.ToString();
string callback = context.Request.QueryString["jsoncallback"];
data = "{d:" + data + ",count:" + count + "}";
context.Response.Write(callback+"("+data+")");
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
思路很简单,就是每次查询给后台传入要查询的差数,再把Response.Write()出来的数据进行重新的展示。
这样做有很大问题的,如果访问量非常大的话,服务器会受不了的。解决方法:
1、加上缓存。
2、将要查询的json数据生成js文件,从js文件查询需要的数据。(但这样数据的实时更新就不行了的)。
对要处理的数据更新是很快情况下建议选择第二种方法是很不错的。
相关文章推荐
- Jquery 中temp 和 template模板循环数据以及下标的获取
- jquery的ajax和getJson跨域获取json数据
- jquery的ajax和getJson跨域获取json数据
- jsonp跨域访问获取数据(使用jquery)
- JavaScript以及Jquery动态添加多选框值以及获取数据的学习记录
- jQuery使用ajax跨域获取数据
- jQuery 使用 $.getJSON() 跨域获取 JSON 数据
- JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
- jquery的ajax和getJson跨域获取json数据
- Jquery ajax 获取数据以及jQuery.parseJSON
- html中通过js获取接口JSON格式数据解析以及跨域问题
- jquery 跨域获取数据
- jQuery使用ajax跨域获取数据
- ajax获取json数据使用jquery分页插件显示
- jquery用jsonp方式跨域获取json数据原理(解决jquery跨服务器权限受限问题)
- jQuery中通过JSONP来跨域获取数据的三种方式
- jQuery 获取跨域XML(RSS)数据的相关总结分析
- jquery的ajax和getJson跨域获取json数据
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- Jquery 实现动态添加table tr 和删除tr 以及checkbox的全选 和 获取添加TR删除TR后的数据