在互聯(lián)網(wǎng)的世界里,很多網(wǎng)站都會(huì)設(shè)計(jì)一些讓用戶可以互相交互的功能,比如用戶可以對(duì)自己喜歡的文章或評(píng)論進(jìn)行點(diǎn)贊。那么這樣的點(diǎn)贊功能究竟是如何實(shí)現(xiàn)的呢?在php開(kāi)發(fā)中,我們常用的是php ajax頂。下面就來(lái)詳細(xì)介紹一下php ajax頂?shù)膶?shí)現(xiàn)過(guò)程。
我們先來(lái)看一下網(wǎng)頁(yè)上的點(diǎn)贊功能。一般來(lái)說(shuō),一個(gè)點(diǎn)贊按鈕的實(shí)現(xiàn)是這樣的:當(dāng)用戶點(diǎn)擊點(diǎn)贊按鈕之后,按鈕的背景色會(huì)發(fā)生變化,并且該文章或評(píng)論的點(diǎn)贊數(shù)會(huì)加一,同時(shí)用戶無(wú)法重復(fù)進(jìn)行點(diǎn)贊操作。那么在php ajax頂中,我們就需要使用到前端ajax技術(shù)和后端php技術(shù)。
//前端html代碼(假設(shè)有一個(gè)id為"like"的按鈕,一個(gè)id為"like_count"的元素) $("#like").click(function(){ $.ajax({ type:"POST", url:"like.php", //后端php文件路徑 data:{ //傳遞給后端的數(shù)據(jù):文章或評(píng)論的id id:id }, success:function(response){ if(response=="liked"){ alert("您已經(jīng)贊過(guò)了!"); }else{ $("#like").css("background-color","red"); var count=parseInt($("#like_count").text()); $("#like_count").text(count+1); } } }); });
如上所示,我們?cè)谇岸耸褂胊jax向后端發(fā)送一個(gè)POST請(qǐng)求,傳遞給后端該文章/評(píng)論的id。后端根據(jù)該id查詢?cè)撐恼?評(píng)論是否已經(jīng)被該用戶點(diǎn)過(guò)贊,如果點(diǎn)過(guò)贊則返回"liked",否則返回"success"。如果返回"liked",前端會(huì)彈出提示信息;如果返回"success",則前端會(huì)修改按鈕的顏色,并且讓該文章/評(píng)論的點(diǎn)贊數(shù)加一。下面是后端php代碼實(shí)現(xiàn)。
//后端php代碼(假設(shè)有一個(gè)名為like.php的文件) $id=$_POST['id']; if($had_liked){ //如果已經(jīng)點(diǎn)過(guò)贊 echo "liked"; }else{ //如果未點(diǎn)過(guò)贊 $like_count++; //點(diǎn)贊數(shù)加一 $update_like="UPDATE articles SET like_count=$like_count WHERE id=$id"; mysqli_query($conn,$update_like); echo "success"; }
在后端,我們首先從前端接收到文章/評(píng)論id,然后查詢?cè)撐恼?評(píng)論是否已經(jīng)被該用戶點(diǎn)過(guò)贊。如果已經(jīng)點(diǎn)過(guò)贊,則返回"liked";否則,我們將該文章/評(píng)論的點(diǎn)贊數(shù)加一,更新數(shù)據(jù)表中該文章/評(píng)論的點(diǎn)贊數(shù),并返回"success"。
總結(jié)一下,php ajax頂?shù)膶?shí)現(xiàn)方式就是:前端使用ajax向后端發(fā)送一個(gè)POST請(qǐng)求,傳遞給后端文章/評(píng)論的id。在后端接收到該請(qǐng)求之后,查詢?cè)撐恼?評(píng)論是否已經(jīng)被該用戶點(diǎn)過(guò)贊。如果已經(jīng)點(diǎn)過(guò)贊,則返回"liked";否則,將該文章/評(píng)論的點(diǎn)贊數(shù)加一,更新數(shù)據(jù)表中該文章/評(píng)論的點(diǎn)贊數(shù),并返回"success"。前端根據(jù)后端返回的結(jié)果展示相應(yīng)的提示信息或修改網(wǎng)頁(yè)上的點(diǎn)贊按鈕和點(diǎn)贊數(shù)。這樣,就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的php ajax頂?shù)墓δ芰恕?/p>