2016-02-17 118 views
0

我做了按钮的ajax功能,如果我点击它意味着'喜欢'并记录到数据库
然后按钮将改变为'不喜欢',如果再次点击它意味着删除记录。
AJAX成功功能不工作

在记录部分工作正常,但我被困在成功函数
这是我整个的JavaScript ..

<script type="text/javascript"> 
    function addLikes(userFRIEND,action) { 
    $('.demo-tutor #tutorial-'+userFRIEND+' li').each(function(index) { 
    $(this).addClass('selected'); 
    $('#tutorial-'+userFRIEND+' #rating').val((index+1)); 
    if(index == $('.demo-tutor #tutorial-'+userFRIEND+' li').index(obj)) { 
     return false; 
    } 
    }); 


    $.ajax({ 
    url: "add_follow.php", 
    data:'userFRIEND='+userFRIEND+'&action='+action, 
    type: "POST", 
    beforeSend: function(){ 
    $('#tutorial-'+userFRIEND+' .btn-likes').html("<img src='http://www.seedsofpeace.org/gif/loading.gif' />"); 
    }, 
    success: function(data){ 
    var followings = parseInt($('#likes-'+userFRIEND).val()); 
    switch(action) { 
    case "like": 
    $('#tutorial-'+userFRIEND+' .btn-likes').html('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button type="button" class="btn btn-danger btn-xs unlike" onClick="addLikes('+userFRIEND+',\'unlike\')">&nbsp;&nbsp;&nbsp;Unfollow&nbsp;&nbsp;&nbsp;</button>'); 
    followings = followings+1; 
    break; 
    case "unlike": 
    $('#tutorial-'+userFRIEND+' .btn-likes').html('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button type="button" class="btn btn-danger btn-xs like" onClick="addLikes('+userFRIEND+',\'like\')">&nbsp;&nbsp;&nbsp;Follow&nbsp;&nbsp;&nbsp;</button>') 
    followings = followings-1; 
    break; 
    } 
    $('#likes-'+userFRIEND).val(followings); 
    if(followings>0) { 
    $('#tutorial-'+userFRIEND+' .label-likes').html(followings); 
    } else { 
    $('#tutorial-'+userFRIEND+' .label-likes').html('0'); 
    } 
    } 
    }); 
} 
    </script> 

我尝试把警报成功的功能和它的工作。 所以我觉得这些错误必须在

$('#tutorial-'+userFRIEND+' .btn-likes').html("blabla"); 

#tutorial - '+ userFRIEND +' .btn-喜欢

但要诚实我不不知道如何修复它

,这是用JavaScript
涉及的HTML(我会通过图片展示,便于寻找。)

HTML fig.

非常感谢你的每一个建议。

+0

尝试在开关之前的变量'action'的警报或console.log,以确保它在调用成功函数之前没有超出范围。 – Joe

+0

我尝试了一个行动警报,它的工作。顺便说一句beforeSend功能是行不通的我也猜想有一些事情在div类和id路径出错@Joe –

+0

这可能都是一个错字。在html图像中,你的div有'id =“tutorial-1;''。我想如果你从id属性中删除分号,那么选择器就会匹配。 – Joe

回答

0

看来你错发布数据,尽量做到在这种格式:

url: "add_follow.php", 
    data: { 
    userFRIEND:userFRIEND, 
    action:action 
    }, 
    type: "POST", 

那就试试这个选择:

console.log(userFRIEND) // this really logs "1" ? 
$('#tutorial-'+userFRIEND+').find('.btn-likes').html("blabla"); 
+0

感谢您的帮助,但它仍然不起作用我不知道如何将console.log(userFRIEND) –

+0

放入您的成功函数中,如果它记录了'1','$('#tutorial - '+ userFRIEND +' ).find('。btn-likes')。html(“blabla”);'应该可以工作 –

0

好像你正在使用jQuery没有

$(document).ready(function() { 
    // your code 
}); 

一定要将js代码放在页面的末尾,并且,正如前面提到的,将对象放入ajax数据道具erty

+0

jQuery的ajax方法也接受data属性中的查询字符串,所以不应该导致任何问题。没有理由在文档就绪处理程序中定义函数,直到通过点击处理程序调用它之后才会执行它。 – Joe