jQuery自动加载更多程序,小白也能看明白

发布于:2024-04-16 ⋅ 阅读:(156) ⋅ 点赞:(0)

1.1.2 正文

========

假设,在我们的数据库中存放着用户的消息数据,现在,我们需要通过Web Service形式开放API接口让客户端调用,当然我们也可以使用一般处理程序(ASHX文件)让客户端调用(具体请参考这里)。

数据表


首先,我们在数据库中创建数据表T_Paginate,它包含三个字段ID、Name和Message,其中ID是自增值。

– =============================================

– Author: JKhuang

– Create date: 10/28/2013

– Description: A table stores the user information.

– =============================================

CREATE TABLE [dbo].[T_Paginate](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Name] [varchar](60) COLLATE Chinese_PRC_CI_AS NULL,

[Message] [text] COLLATE Chinese_PRC_CI_AS NULL,

CONSTRAINT [PK_T_Paginate] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图2 数据表T_Paginate

数据对象模型


我们根据数据表T_Paginate定义数据对象模型Message,它包含三个字段分别是:Id、Name和Comment,具体定义如下:

///

/// The message data object.

///

[Serializable]

public class Message

{

public int Id { get; set; }

public string Name { get; set; }

public string Comment { get; set; }

}

Web Service方法


现在,我们需要实现方法GetListMessages(),它根据客户端传递来的分页数来获取相应的分页数据并且通过JSON格式返回给客户端,在实现GetListMessages()方法之前,我们先介绍数据分页查询的方法。

在Mysql数据库中,我们可以使用limit函数实现数据分页查询,但在SQL Server中没有提供类似的函数,那么,我们可以发挥人的主观能动——自己实现一个吧,具体实现如下:

– =============================================

– Author: JKhuang

– Create date: 10/26/2013

– Description: Creates a pagination function

– =============================================

Declare @Start AS INT

Declare @Offset AS INT

;WITH Results_CTE AS (

SELECT ID, Name, Message, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum

FROM T_Paginate WITH(NOLOCK))

SELECT * FROM Results_CTE WHERE RowNum BETWEEN @Start AND @Offset

上面我们定义了公用表表达式Results_CTE,它获取T_Paginate表中的数据并且根据ID值由小到大排序,然后根据该顺序分配ROW_NUMBER值,其中@Start和@Offset是要查询的数据范围。

接下来,让我们实现方法GetListMessages(),具体实现如下:

///

/// Get the user message.

///

/// the pagination number

/// the pagination data

[WebMethod]

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

public string GetListMessages(int groupNumber)

{

string query = string.Format("WITH Results_CTE AS (SELECT ID, Name, Message, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum " +

"FROM T_Paginate WITH(NOLOCK)) " +

“SELECT * FROM Results_CTE WHERE RowNum BETWEEN ‘{0}’ AND ‘{1}’;”,

(groupNumber - 1) * Offset + 1, Offset * groupNumber);

var messages = new List();

using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings[“RadditConn”].ToString()))

using (var com = new SqlCommand(query, con))

{

con.Open();

using (var reader = com.ExecuteReader(CommandBehavior.CloseConnection))

{

while (reader.Read())

{

var message = new Message

{

Id = (int)reader[“ID”],

Name = (string)reader[“Name”],

Comment = (string)reader[“Message”]

};

messages.Add(message);

}

}

// Returns json data.

return new JavaScriptSerializer().Serialize(messages);

}

}

上面,我们定义了GetListMessages()方法,为了简单起见,我们把数据库的操作直接写在Web Service上了请大家见谅,它通过调用公用表表达式Results_CTE来获取分页数据,最后,我们创建一个JavaScriptSerializer对象序列化数据成JSON格式返回给客户端。

Javascript


由于,我们调用的是本地Web Service API,所以,我们发送同源请求调用API接口(跨源请求例子),具体实现如下:

/**

* Sends same origin request with ajax and json.

* @param options

* The options need to send to server.

* For instance: url and groupNumber.

*/

$.getData = function(options) {

var opts = $.extend(true, {}, $.fn.loadMore.defaults, options);

$.ajax({

url: opts.url,

type: “POST”,

contentType: “application/json; charset=utf-8”,

dataType: “json”,

data: “{groupNumber:” + opts.groupNumber + “}”,

success: function(data, textStatus, xhr) {

if (data.d) {

// We need to convert JSON string to object, then

// iterate thru the JSON object array.

. e a c h ( .each( .each(.parseJSON(data.d), function() {

$(“#result”).append(‘

  • ’ +
  • this.Id + ’ - ’ + ‘’ +

    this.Name + ‘’ + ’ —?’ + ‘’ +

    this.Comment + ‘’);

    });

    $(‘.animation_image’).hide();

    options.groupNumber++;

    options.loading = false;
    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

    深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

    因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

    img

    既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

    由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

    如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

    最后

    javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。

    资料领取方式:点击这里免费领取前端全套学习资料

    css源码pdf

    JavaScript知识点
    首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。

    资料领取方式:点击这里免费领取前端全套学习资料

    [外链图片转存中…(img-hFqB52KO-1712162774862)]

    [外链图片转存中…(img-GvazVGOk-1712162774862)]


网站公告

今日签到

点亮在社区的每一天
去签到