1

私は単純なlike/unlikeスクリプトを開発しました。

スクリプトのように

function like(blog_id,object_id,object_type,user_id,default_count)
{
  if( user_id == 0 ) {
    jQuery("#show_login_box").fancybox({cyclic: true}).trigger('click');
  } else {
           if( default_count == 0 ) {
             var new_count = '1';
             var link = 'unlike(\'' + blog_id + '\',\'' + object_id + '\',\'' + object_type + '\',\'' + user_id + '\',\'' + new_count + '\')\;';
             jQuery('.likes').html('You like this.');
            } else {
             var new_count = parseInt(default_count) + 1;
               if ( jQuery('.like-user').length ) {
                   var name = jQuery('.like-user').html();
                   var link = 'unlike(\'' + blog_id + '\',\'' + object_id + '\',\'' + object_type + '\',\'' + user_id + '\',\'' + new_count + '\')\;';
                   jQuery('.likes').html('You and <span class="like-user">'  + name + '</span> likes this.');

               } else {
                   var link = 'unlike(\'' + blog_id + '\',\'' + object_id + '\',\'' + object_type + '\',\'' + user_id + '\',\'' + new_count + '\')\;';
                   jQuery('.likes').html('You and <span class="like-user"><a href="#">'  + default_count + ' others</a></span> like this.');

               }
            }
             jQuery('.like_click').attr('onclick',link);
             jQuery('.like_click span').html('<img src="/wp-content/plugins/assets/images/icons/unlike-icon.png"> Unlike');
    jQuery.ajax({
        url: '/wp-content/plugins/assets/like.php',
        type: 'POST',
        data: { object_id: object_id, user_id: user_id, type: 'like', blog_id: blog_id, object_type: object_type, count: default_count },
        dataType: 'json', 
        success: function(data)
        {
             // jQuery('#' + object_id + '_count').html(data.total);
        }
    });
  }
}

スクリプトとは異なり

function unlike(blog_id,object_id,object_type,user_id,default_count)
{
            if( default_count == 1 ) {
             var not_like = '0';
             var link = 'like(\'' + blog_id + '\',\'' + object_id + '\',\'' + object_type + '\',\'' + user_id + '\',\'' + default_count + '\',\'' + not_like + '\')\;';
             jQuery('.likes').html('');
            } else {
             var new_count = parseInt(default_count) - 1;
               if ( jQuery('.like-user').length  && default_count > 1 ) {
                   var name = jQuery('.like-user').html();
                   var link = 'like(\'' + blog_id + '\',\'' + object_id + '\',\'' + object_type + '\',\'' + user_id + '\',\'' + new_count + '\')\;';
                   jQuery('.likes').html('<span class="like-user">'  + name + '</span> like this.');

               } else {
                   var link = 'like(\'' + blog_id + '\',\'' + object_id + '\',\'' + object_type + '\',\'' + user_id + '\',\'' + new_count + '\')\;';
                   jQuery('.likes').html('<span class="like-user"><a href="#">'  + new_count + ' people</a></span> like this.');

               }
            }
             jQuery('.like_click').attr('onclick',link);
             jQuery('.like_click span').html('<img src="/wp-content/plugins/assets/images/icons/like-icon.png"> Like');
    jQuery.ajax({
        url: '/wp-content/plugins/assets/like.php',
        type: 'POST',
        data: { object_id: object_id, user_id: user_id, type: 'unlike', blog_id: blog_id, object_type: object_type, count: default_count },
        dataType: 'json', 
        success: function(data)
        {
             // jQuery('#' + object_id + '_count').html(data.total);
        }
    });
}

HTML

<a onclick="like('85','1','product','1','0');" class="button like_click">
<span><img src="wp-content/plugins/assets/images/icons/like-icon.png"> Like</span>
</a><div class="likes"></div>

シナリオ:私は投稿が好きで、最初の投稿をimしたので、返されるメッセージは「あなたはこれが好きです」です。更新せずに気に入らなかったので、「Youlikethis」メッセージが削除されました。これが正しい応答です。

問題:同じ投稿を更新せずに、もう一度気に入ったのですが、メッセージが「あなたはこれが好きです」ではなく「あなたと他の1人がこれが好きです」と表示されます。メッセージ。

JS Fiddleデモ: http: //jsfiddle.net/z8mKX/2/

スクリプトの何が問題なのかを構成できません。助けてください

4

2 に答える 2

1

あなたはラインを持っています、

var link = 'like(\'' + blog_id + '\',\'' + object_id + '\',\'' + object_type + '\',\'' + user_id + '\',\'' + default_count + '\',\'' + not_like + '\')\;';

あなたの異なる機能で。これは、何かとは違ってヒットしたときに何を実行するかを設定します。「like」関数に間違った数の引数を渡しています。古いコードの残り?

于 2012-10-30T17:29:12.450 に答える
0

異なる関数では、var not_like = '0';これを定義しますvar new_count = '0';。DitmarWendtが述べたように、onclick関数に間違った数の引数を渡しているため、更新されたコードはここにあります。

于 2012-10-30T17:30:49.703 に答える