麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > AJAX > 正文

jQuery結(jié)合AJAX之在頁面滾動時從服務(wù)器加載數(shù)據(jù)

2024-09-01 08:33:02
字體:
供稿:網(wǎng)友
這篇文章主要介紹了jQuery結(jié)合AJAX之在頁面滾動時從服務(wù)器加載數(shù)據(jù),文中示例服務(wù)器端為C#程序,需要的朋友可以參考下
 

 簡介

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

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

代碼

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

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

復(fù)制代碼代碼如下:
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;
}

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

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事件,把動態(tài)數(shù)據(jù)插入到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. ); 


 

 

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

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

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

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

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

我粘貼了幾個樣圖:
Output 

jQuery結(jié)合AJAX之在頁面滾動時從服務(wù)器加載數(shù)據(jù)

jQuery結(jié)合AJAX之在頁面滾動時從服務(wù)器加載數(shù)據(jù)


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 色播视频在线播放 | 久久久婷婷一区二区三区不卡 | 国产一区二区视频在线播放 | 国产精品一区二区三区在线播放 | 亚洲乱码精品久久久久 | 日本一区二区视频在线观看 | 337p粉嫩大胆噜噜噜亚瑟影院 | 中文字幕在线网 | 九九热精品在线视频 | 日本高清com| 中文在线免费观看 | 久久一级 | 91精品国产91久久久 | 在线播放中文 | 免费一区二区三区 | 成人超碰 | 久久精品成人免费国产片桃视频 | 欧美日韩在线视频一区二区 | 久久精品99久久久久久2456 | 国产噜噜噜噜噜久久久久久久久 | 91成人午夜性a一级毛片 | 久久草在线观看视频 | 最新中文在线视频 | 精品一区二区免费视频视频 | 一级成人免费 | 久久影院一区二区三区 | 欧美成人精品一区二区三区 | 欧美激情第一区 | 亚洲精品午夜视频 | 久久99精品久久久久久青青日本 | 羞羞的视频 | 人与xxxxhdxxxhdxx| 午夜生活理论片 | 国产日韩免费观看 | 高清视频91 | 久久蜜桃香蕉精品一区二区三区 | 国产精品片一区二区三区 | 欧美日韩亚洲成人 | 久久精品日韩 | 久久99精品久久久久久236 | 97久色|