$.getJSON() 请求点赞或点踩的效果

构建数据通讯的桥梁:getJSON()

getJSON(url,[data],[callback])
url (String) 发送请求地址
data (Map) (可选) 待发送 Key/value 参数
callback (Function) (可选) 载入成功时回调函数。

JSON是一种理想的数据传输格式,它能够很好的融合与JavaScript或其他宿主语 言,并且可以被JS直接使用。使用JSON相比传统的通过 GET、POST直接发送”裸体”数据,在结构上更为合理,也更为安全。至于jQuery的getJSON()函数,只是设置了JSON参数的 ajax()函数的一个简化版本。这个函数也是可以跨域使用的,相比get()、post()有一定优势。另外这个函数可以通过把请求url写 成”myurl?callback=X”这种格式,让程序执行回调函数X。

$.getJSON('feed.jsp',{
   request: images,
   id:      001,
   size:    large
   }, function(json) {
    alert(json.images[0].link);
    //此处json就是远程传回的json对象,假设其格式如下:
    //{'images' : [
    // {link: images/001.jpg, x :100, y : 100},
    // {link: images/002.jpg, x : 200, y 200:}
    //]};
   }
 );

其中$.getJSON(url,{},function(){})与$.get(url,{},function(){},'json')与$.get(url,{},function(){var data=JSON.parse(data);})等价!

其中HTML代码为:

<div class="fire_ice">
            <div class="fire_icon"><span><i>{$like_num}</i></span></div>
            <div class="fi_icon"><i style="width:{$like_percent}"></i><em style="width:{$unlike_percent}"></em></div>
            <div class="ice_icon"><span style="color:#bcd5fd;text-align:center;"><i>{$unlike_num}</i></span></div>
        </div>

JS代码为:

$(function(){
  //zhuanti
        $('.fire_ice .fire_icon').click(function(){
          $.getJSON('/portal.php?mod=topic&topicid=5&action=like',function(data){
               if(data.success == 1){
                    $('.fire_icon i').text(data.like);
                    $('.ice_icon i').text(data.unlike);
                    $('.fi_icon').find('i').css("width",data.like_percent *100 +'%');
                    $('.fi_icon').find('em').css("width",data._percent *100 +'%');
               }else{
                   showWindow('login','member.php?mod=logging&action=login');
               }
          });
        });
        $('.fire_ice .ice_icon').click(function(){
          $.getJSON('/portal.php?mod=topic&topicid=5&action=unlike',function(data){
               if(data.success == 1){
                    $('.fire_icon i').text(data.like);
                    $('.ice_icon i').text(data.unlike);
                    $('.fi_icon').find('i').css("width",data.like_percent *100 +'%');
                    $('.fi_icon').find('em').css("width",data._percent *100 +'%');
               }else{
                   showWindow('login','member.php?mod=logging&action=login');
               }
          });
        });
})

或者为

function changeFireIceRadio(data) {
        jQuery('.fire_icon i').text(data.like);
        jQuery('.ice_icon i').text(data.unlike);
        var container = jQuery('.fi_icon');
        container.find('i').css('width', data.like_percent * 100 + '%');
        container.find('em').css('width', (1 - data.like_percent) * 100 + '%');
    }
    jQuery('.fire_icon').click(function () {
        jQuery.getJSON('/portal.php?mod=topic&topicid=5&action=like', function (data) {
            if (data.success) {
                changeFireIceRadio(data);
            } else {
                jQuery('#btn_login_simple').click();
            }
        });
    });
    jQuery('.ice_icon').click(function () {
        jQuery.getJSON('/portal.php?mod=topic&topicid=5&action=unlike', function (data) {
            if (data.success) {
                changeFireIceRadio(data);
            } else {
                jQuery('#btn_login_simple').click();
            }
        });
    });

效果图为:

没登陆前跟登陆后

 

链接为:http://www.5usport.com/portal.php?mod=topic&topicid=5&action=unlike

 

posted @ 2015-10-26 16:28  chenguiya  阅读(410)  评论(0)    收藏  举报