利用php和ajax实现"顶"贴功能,利用PHP和AJAX实现“顶”贴功能

本文介绍了如何使用AJAX实现类似Digg网站的‘顶’贴功能,以提供更好的用户体验。通过AJAX,用户点击‘顶’按钮后,文章的被顶次数会在不刷新页面的情况下实时更新,并且后台数据库中的计数也会同步增加。实现过程中涉及到index.php(文章列表)、dig.php(处理顶贴请求)和dig.js(AJAX交互)三个关键文件。AJAX使得用户行为能够即时反馈,提高了交互性。
摘要由CSDN通过智能技术生成

最近与xiaofeng在实现一个类Digg的聚合网站,其中有一个很常见功能——“顶”贴,虽然使用普通的超连接也可以实现这一功能,但在用户点击后会有一个刷新的过程,要想有更好的体验,使用AJAX是必须的,这也是一个典型的AJAX应用。 AJAX在用户的操作和服务器间

最近与xiaofeng在实现一个类Digg的聚合网站,其中有一个很常见功能——“顶”贴,虽然使用普通的超连接也可以实现这一功能,但在用户点击后会有一个刷新的过程,要想有更好的体验,使用AJAX是必须的,这也是一个典型的AJAX应用。

AJAX在用户的操作和服务器间建立了一个桥梁,改变了以前在浏览器中每次点击都要刷新页面才能获取新数据的缺点,用户在浏览器的行为将被AJAX的JavaScript脚本捕获,并适时的向服务器获取数据,再在浏览器中进行显示。

1、实现功能与结构

最终的结果,是实现一个由一个超连接和一个span,点击超连接后,将数据库中该文章被顶次数加1,另外将span中显示的被顶数加1。具体演示可以参考Digg.com主页中的Digg按钮。这一功能分别有以下两个文件来实现:

index.php:文章列表,有多篇文章,每篇文章标题的左侧显示有该文章的被顶数及“顶”按钮;

bb53f5b8ef4659f5893af452b5aa5649.png

dig.php:接受一个get参数,名称为postid,值为文章的id,实现的功能是将这篇文章存储在数据库中的被顶次数加1;

dig.js:存储超链接的单击事件,在超链接单击后,一方面将文章id传给dig.php,另外将index.php页面中的被顶数加1;

2、index.php中“顶”及被顶次数

在一个文章列表中,拥有多个文章,而为了控制每篇文章的次数,需要对显示被顶次数的span指定一个唯一的id。例如,下面的代码可以实现这一功能($row为从数据库中取出的一行,其中id为文章id,dig为该文章被顶次数):

1">

利用文章在数据库中的id和一个固定的字符串就为span指定了唯一的id,如numDig-474等。

在其下方还有一个供点击的超连接,超连接的单击事件将调用javascript中自定义的dig函数,并向其传送一个参数,参数内容为被顶文章的id,实现如下:

1

文章列表中显示被顶次数的顶贴连接就完成了。

2、dig.js中AJAX的实现

对于这个脚本来讲,它要实现以下两个方面的功能

改变index.php中由id为numDig-postid的span中显示的被顶次数,使其加1;

向dig.php提交被顶文章的id,以便其更新数据库中的数据;

先看改变index.php中被顶次数显示的实现,这里用一个自定义函数实现,函数名changeNumDig,需要传送一个参数,即被改变被顶次数文章的id。调用函数后,先检查参数是否为一个数字,若是则选构造显示被顶次数的span的id,其结构为numDig-postid,再获取其中存储的被顶次数值,并递增1。代码如下:

1

2

3

4

5

6

7

8

9

10function changeNumDig(postid) {

if(!isNaN(postid)) {

spanNumDigName = "numDig-" + postid;

numDig = document.getElementById(spanNumDigName).innerHTML;

if(!isNaN(numDig)) {

numDig ++;

document.getElementById(spanNumDigName).innerHTML = numDig;

}

}

}

另外就是更改数据库中的被顶次数,即向dig.php提交被顶文章的id,构造一个URL,再将其提交即可。这一过程需要使用AJAX中最重要的对象XmlHttpRequest,这一对象的创建不同的浏览器不一样,具体创建的方法可以参考W3CSchool中的介绍。代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15function GetXmlHttpRequest() {

var xmlHttpReq = null;

try {

xmlHttpReq = new XMLHttpRequest();

}

catch(e) {

try {

xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");

}

catch(e) {

xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");

}

}

return xmlHttpReq;

}

具体实现过程是使用XmlHttpRequest对象的open方法,实现代码如下:

1

2

3

4

5

6

7

8

9function dig(postid) {

if(!isNaN(postid)) {

var url = "dig.php?postid=" + postid;

xmlHttpReq = GetXmlHttpRequest();

xmlHttpReq.open("GET", url, true);

xmlHttpReq.send(null);

changeNumDig(postid);

}

}

3、dig.php修改数据库中的被顶次数

dig.php接受一个需要改变被顶次数的文章id,然后在数据库中查询其所在行,将其dig属性自增1即可。

考虑到安全问题,也需要先检查传进来的文章id是否为数字,然后连接数据库,构造查询字符串,执行检查并关闭即可。具体实现代码如下:

1

2

3

4

5

6

7

8

9

10if(!empty($_GET['postid']) and (ctype_digit($_GET['postid']))) {

require_once('config.php');

$db = new mysqli($dbhost, $dbuser, $dbpwd, $dbname) or die();

$query_string = "UPDATE top10_posts SET dig = dig + 1 WHERE id ={$_GET['postid']}";

$db->query('SET character_set_client = utf8');

$db->query('SET character_set_connection = utf8');

$db->query('SET character_set_results = utf8');

$db->query($query_string);

$db->close();

}

以上三部分即可实现顶贴功能,这可以在很多Web2.0和聚合网站中看到,只不过可能要相对复杂,但实现的逻辑大都如此。

最近与xiaofeng在实现一个类Digg的聚合网站,其中有一个很常见功能——“顶”贴,虽然使用普通的超连接也可以实现这一功能,但在用户点击后会有一个刷新的过程,要想有更好的体验,使用AJAX是必须的,这也是一个典型的AJAX应用。

AJAX在用户的操作和服务器间建立了一个桥梁,改变了以前在浏览器中每次点击都要刷新页面才能获取新数据的缺点,用户在浏览器的行为将被AJAX的JavaScript脚本捕获,并适时的向服务器获取数据,再在浏览器中进行显示。

1、实现功能与结构

最终的结果,是实现一个由一个超连接和一个span,点击超连接后,将数据库中该文章被顶次数加1,另外将span中显示的被顶数加1。具体演示可以参考Digg.com主页中的Digg按钮。这一功能分别有以下两个文件来实现:

index.php:文章列表,有多篇文章,每篇文章标题的左侧显示有该文章的被顶数及“顶”按钮;

bb53f5b8ef4659f5893af452b5aa5649.png

dig.php:接受一个get参数,名称为postid,值为文章的id,实现的功能是将这篇文章存储在数据库中的被顶次数加1;

dig.js:存储超链接的单击事件,在超链接单击后,一方面将文章id传给dig.php,另外将index.php页面中的被顶数加1;

基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值