• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用 jQuery Ajax 在页面滚动时从服务器加载数据_js

javascript 搞代码 7年前 (2018-06-21) 180次浏览 已收录 0个评论
文章目录[隐藏]

 简介

  文本将演示怎么在滚动滚动条时从服务器端下载数据。用AJAX技术从服务器端加载数据有助于改善任何web应用的性能表现,因为在打开页面时,只有一屏的数据从服务器端加载了,需要更多的数据时,可以随着用户滚动滚动条再从服务器端加载。

 背景

  是Facebook促使我写出了在滚动条滚动时再从服务器加载数据的代码。浏览facebook时,我很惊讶的发现当我滚动页面时,新的来自服务器的数据开始插入到此现存的数据中。然后,对于用c#实现同样的功能,我在互联网上了查找了相关信息,但没有发现任何关于用c#实现这一功能的文章或者博客。当然,有一些javaphp实现的文章。我仔细的阅读了这些文章后,开始用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中。

 $(document).ready(  function() { $contentLoadTriggered = false; $("#mainDiv").scroll( function() { if($("#mainDiv").scrollTop() >= ($("#wrapperDiv").height() -     $("#mainDiv").height()) &&    $contentLoadTriggered == false)    $contentLoadTriggered == false) { $contentLoadTriggered = true; $.ajax( { type: "POST", url: "LoadOnScroll.aspx/GetDataFromServer", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", async: true, cache: false, success: function (msg)  { $("#wrapperDiv").append(msg.d); $contentLoadTriggered = false; }, error: function (x, e) { alert("The call to the server side failed. " + x.responseText); } } ); } } ); } );

  这里,为检查滚动条是否已经移动到了底部,使用了下面的条件判断,

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

  这个条件将判断滚动条是否已经到达了底部,当它已经移动到了底部,动态数据将从服务器端加载,并且插入wrapperDiv。把数据插入目标div元素的客户端脚本将在异步调用返回成功时执行。

 success: function (msg) { $("#wrapperDiv").append(msg.d); $contentLoadTriggered = false; }

  这里,你将注意到只有在用户移动滚动到了底部时,请求才会送到服务器端。

  我粘贴了几个样图:

 Output

使用 jQuery Ajax 在页面滚动时从服务器加载数据_js

使用 jQuery Ajax 在页面滚动时从服务器加载数据_js

  原文地址:Load-Data-From-Server-While-Scrolling-Using-jquery

欢迎大家阅读《使用 jQuery Ajax 在页面滚动时从服务器加载数据_js》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用 jQuery Ajax 在页面滚动时从服务器加载数据_js

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址