Javascript 通过js更改按钮的数据操作

Javascript 通过js更改按钮的数据操作,javascript,jquery,ajax,Javascript,Jquery,Ajax,我用ajax和php制作了一个like按钮。一切正常,但我想在单击按钮时更改“数据操作”。 因此,当我的数据库中出现类似内容时,我得到: <button id="btn" data-action="unlike" data-id="post-id">font awesome -> heart</button> <button id="btn" data-action="

我用ajax和php制作了一个like按钮。一切正常,但我想在单击按钮时更改“数据操作”。 因此,当我的数据库中出现类似内容时,我得到:

<button id="btn" data-action="unlike" data-id="post-id">font awesome -> heart</button>
<button id="btn" data-action="like" data-id="post-id">font awesome -> heart-o</button>

有什么帮助或想法吗?干杯

添加类似于
$('#btn').attr(“数据操作”,“like”)
在您的分支语句中,根据它所在的分支将
like
更改为
like
而不是
?您好,我可以尝试一下,但是每次单击按钮时,属性都会在第一次单击时发生更改,因此如果单击两次,则不会发生任何更改。
ajax
调用是否每次都正确触发?您需要将该行放两次,一次放在
if(action==“like”)
中,一次放在
else if(action==“difference”)
中。还要检查服务器是否返回这两个字符串exactlyCool yep,正在工作。:)当然Javascript是完全正确的,但问题是由php后端造成的。所以我刚刚创建了两个函数:setLikeByUs($uname,$newsid,$action)和setUnlikeByUs($uname,$newsid,$action),但是因为我没有在结果是否存在时使用控件,所以代码在我的数据库中保存了太多的操作。所以我写下了一个条件,如果action等于like或nothing,那么我就用这个查询连接到我的db,并用json返回之前选择的action。希望这是清楚的,祝你有一个美好的一年添加类似于
$('#btn').attr(“数据操作”,“like”)
在您的分支语句中,根据它所在的分支将
like
更改为
like
而不是
?您好,我可以尝试一下,但是每次单击按钮时,属性都会在第一次单击时发生更改,因此如果单击两次,则不会发生任何更改。
ajax
调用是否每次都正确触发?您需要将该行放两次,一次放在
if(action==“like”)
中,一次放在
else if(action==“difference”)
中。还要检查服务器是否返回这两个字符串exactlyCool yep,正在工作。:)当然Javascript是完全正确的,但问题是由php后端造成的。所以我刚刚创建了两个函数:setLikeByUs($uname,$newsid,$action)和setUnlikeByUs($uname,$newsid,$action),但是因为我没有在结果是否存在时使用控件,所以代码在我的数据库中保存了太多的操作。所以我写下了一个条件,如果action等于like或nothing,那么我就用这个查询连接到我的db,并用json返回之前选择的action。希望这是清楚的,祝你有一个美好的一年
$('[data-id]').on('click', function(){
    var newsid = $(this).data('id'); 
    var action = $(this).data('action');
    var i;
    buttonid = $(this).attr('data-id');
    actionid = $(this).attr('data-action');
    output = "";
    
    function buttonHeart(){
        $("[data-id='"+buttonid+"'").addClass("svEFan");
        setTimeout(function(){
            $("[data-id='"+buttonid+"'").removeClass("svEFan");
        }, 1000);
    }
    
    $.ajax({
        url: '/recipes/actions-recipe',
        type: 'post',
        data: {'action': action, 'newsid': newsid},
        dataType: 'json',
        success:function(data){
            if(data.type == "error"){
                output = "Error: "+data.text;
            }else{
                //like
                if(action == "like"){
                    buttonHeart();
                    //I would like to change data-action from like to unlike
                }else if(action == "unlike"){
                    buttonHeart();
                    //reverse
                }
                output = data.text;
            }
            //alert(output);
            return false;
        }
    });
});