jQuery ajax实现顶一下,踩一下效果

先看下效果图

本博客上面的顶一下,踩一下效果是直接用别人做好的插件放上去的,上星期正好要用到这个效果,就去研究了下。下面就一步一步来实现整个效果。。。。

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()都要重新获取绑定下,这样就保证了数据的实时性。

 

看下最后的效果     点我下载演示

posted on 2010-07-15 08:43  rainweb  阅读(3721)  评论(3编辑  收藏  举报