jQuery ajax實現頂一下,踩一下效果

來源:互聯網
上載者:User

先看下

本部落格上面的頂一下,踩一下效果是直接用別人做好的外掛程式放上去的,上星期正好要用到這個效果,就去研究了下。下面就一步一步來實現整個效果。。。。

demo頁面的實現

XML/HTML代碼
  1. <div class="digg" id="digg">  
  2.   <div class="good"> <a href="#">  
  3.     <p>這個文檔不錯</p>  
  4.     <div class="bar">  
  5.       <div id="g_img" style="width:70%"></div>  
  6.     </div>  
  7.     <span class="num" id="num">70%(7000)</span> </a> </div>  
  8.   <div class="bad"> <a href="#">  
  9.     <p>文檔有待改進</p>  
  10.     <div class="bar">  
  11.       <div id="b_img" style="width:30%"></div>  
  12.     </div>  
  13.     <span class="num">30%(3000)</span> </a> </div>  
  14. </div>  

 

主要一點就是通過百分比來控制g_img的寬度,至於css代碼就不貼出來了。

 

看下demo就知道了

 

有了demo,其他實現起來就方便多了,首先是頁面擷取html,頁面第一次載入,用ajax擷取後台資料,不要直接顯示。(這裡為了方便測試,就用asp作為後台語言)

下面是asp輸出html代碼

XML/HTML代碼
  1. function getdigshtml()'輸出html   
  2.     dim rsajax,sql,str,digsnum,undigsnum,digsnumall,digsper,undigsper   
  3.     Set rsajax=server.CreateObject("adodb.recordset")   
  4.     sql="select * from dig where id=1"  
  5.     rsajax.open sql,conn,1,1   
  6.     digsnum=rsajax("digs")   
  7.     undigsnum=rsajax("undigs")   
  8.     if isnull(digsnum) then digsnum=0  
  9.     if isnull(undigsnum) then undigsnum=0  
  10.     digsnumdigsnumall=digsnum+undigsnum   
  11.        
  12.     if digsnumall=0 then    
  13.         digsper=0  
  14.         undigsper=0  
  15.     else   
  16.         digsper=FormatNumber(cint(digsnum)/cint(digsnumall),3)*100   
  17.         undigsper=FormatNumber(cint(undigsnum)/cint(digsnumall),3)*100   
  18.     end if   
  19.        
  20.     str="<div class='good'>"  
  21.     strstr=str&"<a href=JavaScript:isdigs('digs') >"   
  22.     strstr=str&"<p>這個文檔不錯</p><div class='bar'><div id='g_img' style='width:"&digsper&"%'></div></div>"   
  23.     strstr=str&"<span class='num'>"&digsper&"%("&digsnum&")</span>"   
  24.     strstr=str&"</a></div><div class='bad'>"   
  25.     strstr=str&"<a href=JavaScript:isdigs('undigs') >"   
  26.     strstr=str&"<p>文檔有待改進</p><div class='bar'><div id='b_img' style='width:"&undigsper&"%'></div></div>"   
  27.     strstr=str&"<span class='num'>"&undigsper&"%("&undigsnum&")</span>"   
  28.     strstr=str&"</a></div>"   
  29.     getdigshtml=str  
  30. end function   

 

輸出完了 接下來就是前台擷取,這時候我們就要用到jquery ajax,為什麼不直接用ajax,原因很簡單,我不會。。。。。看一下jquery中ajax代碼,很簡單

javaScript代碼
  1. function getdigshtml()//擷取頂一下,踩一下html   
  2. {   
  3.     $.ajax({       
  4.         type:'POST',   
  5.         url:'digg.asp',   
  6.         data:'action=getdigshtml',   
  7.         success:function(msg){   
  8.                  $("#digg").html(msg);   
  9.             }   
  10.     })     
  11. }   

 

輸出完了,接下來一步就是digs和undigs的操作了,跟擷取html的代碼差不多

JavaScript代碼
  1. function isdigs(digtype)//頂一下,踩一下操作   
  2. {   
  3.         $.ajax({       
  4.         type:'POST',   
  5.         url:'digg.asp',   
  6.         data:'action=digs&digtype='+digtype,   
  7. /*      beforeSend:function(){  
  8.             $("#vote").hide();  
  9.             $("#loadings").show();  
  10.         }, ajax請求顯示loading效果*/  
  11.         success:function(msg){   
  12.                 switch (msg)   
  13.                     {   
  14. /*      後台用來判斷  
  15.                         case '1':                             
  16.                             $("#loadings").hide();  
  17.                             $("#vote").show();    
  18.                             alert("請先登入!");  
  19.                             break;  
  20.                         case '2':                             
  21.                             $("#loadings").hide();  
  22.                             $("#vote").show();  
  23.                             alert("請先下載,再操作!");                           
  24.                             break;  
  25.                         case '4':                             
  26.                             $("#loadings").hide();  
  27.                             $("#vote").show();  
  28.                             alert("您已經參與過評價!");                           
  29.                             break;*/  
  30.                         case '3':   
  31.                             getdigshtml();//重新綁定html   
  32.                             //$("#loadings").hide();   
  33.                             //$("#vote").show();       
  34.                             alert("謝謝你的參與!");   
  35.                             break;   
  36.                        
  37.                         default:   
  38.                     }   
  39.             }   
  40.         })     
  41. }  

 

注釋掉的代碼:一部分是後台資料合法驗證用的,beforeSend這個方法是ajax請求執行前的相關操作(用於做loading比較多)

最後一步就是,每次資料提交完並且成功返回,getdigshtml()都要重新擷取綁定下,這樣就保證了資料的即時性。

 

看下最後的效果     點我下載示範

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.