我有这段代码
$('a.like').on('click', function(e){
e.preventDefault();
var object_id = $(this).data('id');
var token = $(this).data('token');
var like = $(this);
$.ajax({
url: '{{URL::to('likes')}}',
type: 'post',
data: "object_id="+object_id+"&_token="+token,
datatype: 'json'
})
.done(function(data)
{
if (data.success)
{
var likes = data.count;
$(like).removeClass('like').addClass('unlike').attr('title', 'Un-Like this Object');
$(like).next('i').removeClass('not-liked').addClass('liked');
$(like).next('span').text(likes);
}
});
});
由于某种原因我的if (data.success)
没有被运行。我完成了console.log(data)
,我得到了以下内容
{"success":true,"count":1}
我还控制台记录了like
变量,它返回页面上的正确元素。不确定是什么问题。这是ajax运行之前的元素。
<a data-token="7183FdwgLl23Nfq9heOdMYEjmqe9ELtGXCrxUpbu" data-id="92" class="like" title="Like this Object" href="#"><i class="fa fa-heart not-liked"></i> <span class="count">0</span></a>
P.S。 - 当它被发布时,一切都在服务器端顺利运行,它返回一个正确格式化的JSON响应。
答案 0 :(得分:0)
尝试:
$(this).removeClass('like').addClass('unlike').attr('title', 'Un-Like this Object');
$(this).find('i').removeClass('not-liked').addClass('liked');
$(this).find('span').text(likes);
'a'标签包含元素“i”和“span”,因此next()将不起作用。
答案 1 :(得分:0)
JSFiddle示例http://jsfiddle.net/8uwYS/
(json部分只是为了得到好的答案)。
更新:
type: 'POST',
dataType: 'json'
和
like.removeClass('like').addClass('unlike').attr('title', 'Un-Like this Object');
like.find('i').removeClass('not-liked').addClass('liked');
like.find('span').text(likes);
答案 2 :(得分:0)
jQuery的Ajax :https://api.jquery.com/jQuery.ajax/
如果complete
未被调用,您可以尝试聆听success
事件。
此外,你有错别字。 type
应为POST
,datatype
应为dataType
同样,i
和span
是like
的子项。
$('a.like').on('click', function(e){
e.preventDefault();
var object_id = $(this).data('id');
var token = $(this).data('token');
var like = $(this);
$.ajax({
url: '{{ URL::to('likes') }}',
type: 'POST',
data: JSON.stringify({"object_id": object_id, "_token": token}),
dataType: 'json',
success: function (data) {
like.removeClass('like')
.addClass('unlike')
.attr('title', "Unlike this object.");
like.children('i').removeClass('not-liked').addClass('liked');
like.children('span').text(data.count);
}
});
});