zoukankan      html  css  js  c++  java
  • jQuery ajax实现顶一下,踩一下效果

    http://www.cnblogs.com/rainweb/archive/2010/07/15/1777707.html

    http://www.rainweb.cn/article/311.html

    先看下效果图

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

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

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

  • 相关阅读:
    Codeforces714C【映射】
    Codeforces712C【贪心】
    Codeforces712B【= =】
    lightoj1259 【素数预处理】
    Codeforces482B【线段树构造】
    51nod 1348【next_permutation】
    hdoj5289【RMQ+二分】【未完待续】
    hdoj5875【二分+RMQ】
    RMQ算法
    AtCoder Regular Contest 061 DSnuke's Coloring
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1777721.html
Copyright © 2011-2022 走看看