日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用AJAX实现无刷新的分页

發(fā)布時間:2025/4/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用AJAX实现无刷新的分页 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  最近學習了AJAX技術。AJAX,指的是異步的Javascript和xml。它的基本原理就是頁面用Javascript發(fā)送一個異步的http請求到服務器,服務器返回數(shù)據(jù)后,再用Javascript靜態(tài)的去更改頁面某個地方的值,而無需提交表單。之前,服務器返回的數(shù)據(jù)都是用xml的形式傳給客戶端的,但是xml傳一個類的對象的數(shù)據(jù)會很長,流量大,所以現(xiàn)在都是改用json來傳數(shù)據(jù),復雜數(shù)據(jù)用json,簡單數(shù)據(jù)用string。所有AJAX中的x已經(jīng)失去了它原來的意義。

  大家都知道JQuery,是一個Javascript的封裝庫,當然JQuery也實現(xiàn)了對AJAX的封裝,這里將分頁就是直接用JQuery框架來講哈,比較簡單。

  首先講一下原理:分頁有兩個要點:1.有多少頁,2.每頁有多少條記錄。總頁數(shù)和每頁數(shù)據(jù)都是要從服務器端返回的。所以我們就先來建一個一般處理程序:PageService.ashx,處理用戶的請求。取得頁數(shù)參數(shù):GetPageCount,取得頁數(shù)據(jù)參數(shù)用GetPagedData,和PageNo。一下是一般處理程序PageService.ashx代碼:

PageService.ashx public void ProcessRequest(HttpContext context)
{
context.Response.ContentType
= "text/plain";
string action=context.Request["action"];
if (action == "GetPageCount") //如果請求類型為取得總頁數(shù),則如下處理。
{
//該方法是建立在強連接DataSet內(nèi)的,取得總記錄數(shù)的方法
int counts = new CommentTableAdapter().GetComentCount().Value;
int page = counts / 10; //默認每頁10條數(shù)據(jù)
if (counts%10 != 0)
{
page
++;
}
context.Response.Write(page);
//取得數(shù)據(jù)后返回給客戶端。

}
else if (action == "GetPageData") //請求類型是取得某頁的數(shù)據(jù),則還會傳一個頁碼過來
{
int pageNo = Convert.ToInt32(context.Request["PageNo"]);
//該方法是給出頁數(shù),去數(shù)據(jù)庫表內(nèi)取得對應頁的數(shù)據(jù)
var data = new CommentTableAdapter().GetPageData((pageNo-1)*10+1,pageNo*10);
var p1
= data.Select( c =>new {c.name,c.Comment });
JavaScriptSerializer jss
= new JavaScriptSerializer();
//將取得數(shù)據(jù)用json序列化后傳回客戶端
context.Response.Write(jss.Serialize(p1));
}
}

接下來是在htm頁面呈現(xiàn)數(shù)據(jù)。

  我在這里只是講原理,所以美工方面就不苛求了。假設每頁數(shù)據(jù)都是放在一個<ul><li></li></ul>里面,一個li就裝一條數(shù)據(jù)。頁碼放在一個table內(nèi)顯示,一行n列的table,每一列就一個頁面。

<body>
<ul id="Comment"></ul><br />
頁數(shù):
<table id="pageNo"></table>
</body>

接下來就是用JQuery,在頁面加載的時候給Comment這個ul和pageNo這個table初始化數(shù)據(jù)。頁面加載默認顯示第一頁數(shù)據(jù)。以下是:無刷新分頁.htm頁面的JQuery代碼:

無刷新分頁.htm? <script type="text/javascript">
$(function(){
//-----------------------------------------------------------
function getPageData(pageNo){ //取得某頁數(shù)據(jù)的方法
$.post("PageService.ashx",{"action":"GetPageData","PageNo":pageNo},function(data,status){
if(status=="success"){
$(
"#Comment").empty();
var comments
=$.parseJSON(data); //反序列化json數(shù)據(jù)。
for(var i=0;i<comments.length;i++){
var row
=comments[i];
var li
= $("<li>"+row.name+" : "+row.Comment+"</li>");
$(
"#Comment").append(li); //每取出一條數(shù)據(jù)就創(chuàng)建一個li并append到Comment/ul內(nèi)。
}
}
});
}
//-------------------------------------------------------------------
getPageData(1); //首次進入頁面,看到的是第一頁的數(shù)據(jù)

//----------------------------------------------------------------/
//取得所有的頁數(shù)并且初始化分頁按鈕
$.post("PageService.ashx",{"action":"GetPageCount"},function(data,status){
if(status=="success"){
var tr1
=$("<tr></tr>");
var pageNo
=parseInt(data);
for(var i=1;i<=pageNo;i++){
var td
=$("<td><a href=''>"+i+"</a></td>");
tr1.append(td);
}
$(
"#pageNo").append(tr1);

$(
"#pageNo a").click(function(e){ //頁碼創(chuàng)建后,就為每一個頁碼監(jiān)聽一個click事件。
e.preventDefault(); //取消a的默認跳轉行為
getPageData($(this).html()); //點擊后就去執(zhí)行取頁數(shù)據(jù)的操作。
});
}
});
//----------------------------------------------------------------------------

});
</script>

?歡迎各位指正,謝謝。

轉載于:https://www.cnblogs.com/YangFengHui/archive/2011/04/18/2019527.html

總結

以上是生活随笔為你收集整理的用AJAX实现无刷新的分页的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。