亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

jQuery結合AJAX之在頁面滾動時從服務器加載數據

2024-09-01 08:33:32
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了jQuery結合AJAX之在頁面滾動時從服務器加載數據,文中示例服務器端為C#程序,需要的朋友可以參考下
 

 簡介

文本將演示怎么在滾動滾動條時從服務器端下載數據。用AJAX技術從服務器端加載數據有助于改善任何web應用的性能表現,因為在打開頁面時,只有一屏的數據從服務器端加載了,需要更多的數據時,可以隨著用戶滾動滾動條再從服務器端加載。
背景

是Facebook促使我寫出了在滾動條滾動時再從服務器加載數據的代碼。瀏覽facebook時,我很驚訝的發現當我滾動頁面時,新的來自服務器的數據開始插入到此現存的數據中。然后,對于用c#實現同樣的功能,我在互聯網上了查找了相關信息,但沒有發現任何關于用c#實現這一功能的文章或者博客。當然,有一些Java和PHP實現的文章。我仔細的閱讀了這些文章后,開始用c#寫代碼。由于我的C#版本運行的很成功,所以我想我愿意分享它,因此我發表了這邊文章。

代碼

只需要很少的幾行代碼我們就能在滾動時完成加載。滾動頁面時,一個WebMethod將被客戶端調用,返回要插入客戶端的內容,同時,在客戶端,將把scroll事件綁定到一個客戶端函數(document.ready),這個函數實現從服務器端加載數據。下面詳細說說這兩個服務器端和客戶端方法。

服務器端方法:這個方法用來從數據庫或者其他數據源獲取數據,并根據數據要插入的控件的格式來生成HTML串。這里我只是加入了一個帶有序列號的消息。
 
[WebMethod]

復制代碼代碼如下:
public static string  GetDataFromServer()
{
    string resp = string.Empty;
    for(int i = 0; i <= 10; i++)
    {
        resp += "<p><span>"  + counter++ +
          "</span> This content is dynamically appended " +
          "to the existing content on scrolling.</p>" ;
    }
    return resp;
}

若你要從數據庫加載數據,可以如下修改代碼:
 
[WebMethod]
復制代碼代碼如下:

public static string GetDataFromServer()
    {
        DataSet ds = new DataSet();
  
        // Set value of connection string here
        string strConnectionString = ""; // Insert your connection string value here
        SqlConnection con = new SqlConnection(strConnectionString);
  
        // Write the select command value as first parameter
        SqlCommand command = new SqlCommand("SELECT * FROM Person", con);
        SqlDataAdapter adp = new SqlDataAdapter(command);
int retVal = adp.Fill(ds);
  
        string resp = string.Empty;
for (int i = 1; i <= ds.Tables[0].Rows.Count; i++)
        {
            string strComment = string.Empty;
if (ds.Tables != null)
            {
if (ds.Tables[0] != null)
                {
if (ds.Tables[0].Rows.Count > 0)
                    {
if (ds.Tables[0].Rows.Count >= i - 1)
                        {
if (ds.Tables[0].Rows[i - 1][0] != DBNull.Value)
                            {
                                strComment = ds.Tables[0].Rows[i - 1][0].ToString();
                            }
                        }
                    }
                }
            }
            resp += "<p><span>" + counter++ + "</span> " + strComment + "</p>";
        }
return resp;
    }

客戶端方法:在客戶端,我使用了document.ready方法,并且把div的scroll事件綁定到了該方法上。我使用了兩個div元素,mainDiv和wrapperDiv,并且給mainDiv注冊了scroll事件,把動態數據插入到wrapperDiv中。
  1. $(document).ready( 
  2. function() 
  3. $contentLoadTriggered = false
  4. $("#mainDiv").scroll( 
  5. function() 
  6. if($("#mainDiv").scrollTop() >= ($("#wrapperDiv").height() - 
  7.   $("#mainDiv").height()) && 
  8.   $contentLoadTriggered == false
  9.   $contentLoadTriggered == false
  10. $contentLoadTriggered = true
  11. $.ajax( 
  12. type: "POST"
  13. url: "LoadOnScroll.aspx/GetDataFromServer"
  14. data: "{}"
  15. contentType: "application/json; charset=utf-8"
  16. dataType: "json"
  17. async: true
  18. cache: false
  19. success: function (msg) 
  20. $("#wrapperDiv").append(msg.d); 
  21. $contentLoadTriggered = false
  22. }, 
  23. error: function (x, e) 
  24. alert("The call to the server side failed. " + 
  25. x.responseText); 
  26. ); 
  27. ); 
  28. ); 


 

 

這里,為檢查滾動條是否已經移動到了底部,使用了下面的條件判斷,
 

  1. if($("#mainDiv").scrollTop() >= 
  2.  ($("#wrapperDiv").height() - $("#mainDiv").height()) && 
  3.   $contentLoadTriggered == false
 

這個條件將判斷滾動條是否已經到達了底部,當它已經移動到了底部,動態數據將從服務器端加載,并且插入wrapperDiv。把數據插入目標div元素的客戶端腳本將在異步調用返回成功時執行。
 

  1. success: function (msg) 
  2. $("#wrapperDiv").append(msg.d); 
  3. $contentLoadTriggered = false
 

這里,你將注意到只有在用戶移動滾動到了底部時,請求才會送到服務器端。

我粘貼了幾個樣圖:
Output 

jQuery結合AJAX之在頁面滾動時從服務器加載數據

jQuery結合AJAX之在頁面滾動時從服務器加載數據


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美三级xxx| 亚洲精品国产品国语在线| 日韩精品黄色网| 全球成人中文在线| 国产欧洲精品视频| 色噜噜狠狠狠综合曰曰曰| 亚洲成人黄色网址| 亚洲va国产va天堂va久久| 97免费视频在线| 久久久久久久国产精品视频| 日韩精品久久久久久福利| 精品久久久久久久久久| 欧美激情极品视频| 国产欧美精品一区二区| 国产精品久久网| 日韩精品中文在线观看| 成人免费看片视频| 亚洲精品视频免费| 亚洲自拍偷拍色片视频| 97在线视频国产| 国产欧美日韩精品专区| 亚洲精品中文字幕有码专区| 亚洲偷熟乱区亚洲香蕉av| 久久好看免费视频| www.日韩视频| 日韩av在线看| 国产色婷婷国产综合在线理论片a| 91亚洲精品久久久| 97精品国产97久久久久久| 国产精品欧美激情| 成人福利视频在线观看| 91产国在线观看动作片喷水| 亚洲a区在线视频| 亚洲视频在线观看免费| 性欧美办公室18xxxxhd| 青青久久av北条麻妃海外网| 日韩中文字幕在线| 亚洲精品久久久久久久久久久久| 欧美精品18videos性欧美| 欧美成年人视频| 91高清免费视频| 一区二区三区 在线观看视| 中文字幕日本精品| 国产成人+综合亚洲+天堂| 日韩成人在线视频网站| 国产精品自拍小视频| 久久久午夜视频| 亚洲自拍在线观看| 日韩视频免费在线观看| 久久人人爽人人| 九九精品在线观看| 国产成人精品在线视频| 欧美激情女人20p| 日韩在线视频观看正片免费网站| 91精品国产91久久久久久吃药| 久久久久成人精品| 欧美精品videos性欧美| 亚洲国产高潮在线观看| 成人黄色av播放免费| 欧美日韩中文在线| 欧美成人亚洲成人| 日本免费久久高清视频| 久久久99免费视频| 久久人人爽人人| 国产精品99久久99久久久二8| 国产97免费视| 中文字幕日本欧美| 欧美劲爆第一页| 亚洲日韩欧美视频一区| 欧美在线视频观看免费网站| 久久综合伊人77777| 欧美综合一区第一页| 亚洲性生活视频在线观看| 日韩精品在线观看一区二区| 国产成人精品久久二区二区| 大伊人狠狠躁夜夜躁av一区| 亚洲影院在线看| 欧洲亚洲免费视频| 久久艹在线视频| 精品成人乱色一区二区| 国产精品吴梦梦| 日韩欧美黄色动漫| 日韩少妇与小伙激情| 久久精品久久久久久| 日本精品性网站在线观看| 欧美午夜丰满在线18影院| 国内精品久久久久伊人av| 欧美日韩亚洲一区二| www.日韩不卡电影av| 日本精品久久电影| 国产精品成人一区二区| 欧美在线激情视频| 久久综合五月天| 午夜精品久久久久久久白皮肤| 98精品国产高清在线xxxx天堂| 91精品国产91久久久久久| 国产日韩在线一区| 97国产精品人人爽人人做| 国产精品久久久久久久天堂| 欧美精品在线观看| 成人激情在线播放| 成人激情在线观看| 精品久久久久国产| 欧美日韩在线另类| 57pao成人永久免费视频| 日韩网站免费观看高清| 亚洲天堂日韩电影| 国产精品久久久久久五月尺| 日韩欧美中文在线| 欧美成人性色生活仑片| 88国产精品欧美一区二区三区| 高清欧美一区二区三区| 久久6精品影院| 国产成人精品久久二区二区91| 尤物99国产成人精品视频| 97在线免费观看视频| 欧美日韩免费一区| 亚洲全黄一级网站| 久久精品人人爽| 亚洲精品中文字幕有码专区| 狠狠做深爱婷婷久久综合一区| 日韩欧美国产视频| 中文字幕日韩av| 精品视频在线播放色网色视频| 欧美一区第一页| 日韩福利伦理影院免费| 久久成人人人人精品欧| 日韩一区二区久久久| 亚洲香蕉成视频在线观看| 九九精品视频在线| 日韩在线中文字幕| 亚洲欧洲免费视频| 91国内免费在线视频| 精品综合久久久久久97| 亚洲第一天堂av| 在线视频一区二区| 日韩精品在线免费观看| 亚洲欧美日韩国产中文专区| 色中色综合影院手机版在线观看| 91精品国产91久久久| 亚洲国模精品一区| 亚洲一区二区黄| 成人黄色在线免费| 国产成人一区二区在线| 日韩禁在线播放| 在线观看国产欧美| 九九热精品在线| 精品福利视频导航| 亚洲欧美激情在线视频| 精品调教chinesegay| 北条麻妃99精品青青久久| 欧美一级高清免费| 成人高h视频在线| 97精品国产97久久久久久春色| 国产精品欧美在线| 精品久久久久久中文字幕大豆网| 日本久久91av| 国产一区视频在线播放| 亚洲精品国产美女| 538国产精品一区二区在线| 亚洲国产精品嫩草影院久久| 一本色道久久88精品综合| 欧美亚洲在线播放| 国产精品mp4|