今天的任務(wù)內(nèi)容:將前臺(tái)頁面搜索結(jié)果中,不喜歡的內(nèi)容(鏈接),刪除掉,因?yàn)檎麄€(gè)網(wǎng)站的編程框架式thinkphp,運(yùn)用js中的ajax對(duì)頁面進(jìn)行響應(yīng),調(diào)用后臺(tái)php接口,實(shí)現(xiàn)前臺(tái)和后臺(tái)數(shù)據(jù)庫的同時(shí)更新.
首先我們需要做的就是在前臺(tái)頁面中添加一個(gè)文本“刪除”,可以這么添加:
<a href="javascript:void(0);" id= "<php>echo $val[id]</php>" class="delete" >刪除</a>
上面的html代碼的意思:就是給刪除添加一個(gè)href,這個(gè)href是個(gè)js函數(shù),類似于超鏈接的作用,當(dāng)然對(duì)于我這樣的新手在剛開始的時(shí)候會(huì)有疑惑,我們平時(shí)的超鏈接不是這樣的,網(wǎng)頁中很多的javascript:void(0),那程序怎么知道用戶點(diǎn)擊刪除后,會(huì)響應(yīng)其真正對(duì)應(yīng)的js函數(shù)呢?別急,這就是為什么會(huì)為刪除添加id以及class這樣的標(biāo)簽,相信我把js中的代碼公布出來以后你就會(huì)明白了,代碼如下:
- jQuery(".list a.delete").click(function(){
- if(confirm("你確定要?jiǎng)h除嗎?")){
- var _this=this;
- var id = jQuery(_this).attr("id");
- jQuery.ajax({
- url : '/Search/index.php/Jason/delete?',
- data : {'id':id},
- dataType : 'json',
- success : function(data){
- var del = data.del;
- if(del == 1){//刪除成功
- jQuery("#"+id).parents(".list").remove();
- }else{//刪除失敗
- alert("刪除失敗");
- }
- }
- });
- }
- });
大家看函數(shù)的頭部:jQuery(".list a.delete").click(),jQuery后面的標(biāo)簽是很重要的,這就保證了jquery很準(zhǔn)確的響應(yīng)頁面中用戶點(diǎn)擊的“位置”,添加的事件為click(),在click里添加響應(yīng)事件的代碼,var id = jQuery(_this).attr("id");獲取a對(duì)應(yīng)的id,因?yàn)檫@個(gè)id是我們刪除數(shù)據(jù)庫時(shí)用到的鏈接id,當(dāng)然這種直接明文的方式不好,在這里只是介紹整個(gè)響應(yīng)過程。調(diào)用ajax,實(shí)現(xiàn)異步的運(yùn)行整個(gè)過程。我們設(shè)置了js接受的是json串,這里的方式應(yīng)該有很多種吧,我沒有去嘗試,大家要是有興趣可以自行嘗試一下。/Search/index.php/Jason/delete?這句話就是js去請(qǐng)求php的接口,php接口對(duì)用的代碼如下:
注意ajax在求php接口時(shí)的路徑,也就是delete函數(shù)必須放在JasonAction.class.php中,此例子是必須這樣的:
- public function delete(){
- if($this->isGet()){
- $userId = session("uid");//用戶登錄
- if(!empty($userId)){
- $a = M('***');
- $id = $this->_get('id');
- $result=$a->where("id=$id")->delete();//刪除
- if($result > 0){
- $arr = array("del"=>'1');
- }else{
- $arr = array("del"=>'0');
- }
- $json_str = json_encode($arr);
- echo $json_str;//返回給js
- }
- }
- }
相信大家對(duì)上面的代碼不會(huì)陌生吧,整個(gè)過程都是thinkphp框架內(nèi)部配置完畢的.
var del = data.del;這句是接受php代碼返回來的json串中del這個(gè)key的value,進(jìn)而在前臺(tái)進(jìn)行頁面更新和響應(yīng).
- if(del == 1){//刪除成功
- jQuery("#"+id).parents(".list").remove();//這句話就是后臺(tái)刪除成功后,直接在前臺(tái)對(duì)響應(yīng)的div進(jìn)行刪除,這樣性能就會(huì)很快,無需進(jìn)行后臺(tái)數(shù)據(jù)的重新提取至前臺(tái)頁面中,
- }else{//刪除失敗
- alert("刪除失敗");
- }
整個(gè)響應(yīng)的過程就是這樣,至于效果優(yōu)化,是優(yōu)化和細(xì)化方面的問題,后來,身邊的同時(shí)又告訴我前臺(tái)移除響應(yīng)鏈接的另一個(gè)動(dòng)態(tài)效果:
將:jQuery("#"+id).parents(".list").remove();替換為:
- jQuery("#"+id).parents(".list").slideUp("slow", function(){
- jQuery(this).remove();
- });
大家不妨試試效果,很不錯(cuò)的,好了,響應(yīng)過程記載完畢,只是自己的個(gè)人見解和認(rèn)知.
新聞熱點(diǎn)
疑難解答
圖片精選