我有一个链接:
<a class="tag" wi_id="3042" wl_id="3693" for_user_id="441" href="#a">
触发ajax调用
$(".tag").click(function() { var for_user_id = $(this).attr("for_user_id"); var wl_id = $(this).attr("wl_id"); var wi_id = $(this).attr("wi_id"); $.ajax({ type: "POST", url: "/ajax/actions/tag.php", data: { 'for_user_id': 'for_user_id', 'wl_id': 'wl_id', 'wi_id': 'wi_id' }, success: function(data){ $(this).text("You've tagged this"); $(this).closest('.gl_buttons_holder').toggleClass('gl_buttons_holder gl_buttons_holder_tagged'); $(this).closest('.gl_buttons').addClass('tagged'); } }); return false; });
但是在控制台中,我看到以下内容:
TypeError: e is undefined
处理了ajax文件,但是POST数据为空,并且没有执行成功操作,因此将其用零发布,并且类未更改
我凝视着……有什么明显的东西吗?
this不会自动传递给AJAX回调函数。您可以使用context:参数告诉jQuery通过它:
this
context:
$.ajax({ type: "POST", url: "/ajax/actions/tag.php", data: { 'for_user_id': for_user_id, 'wl_id': wl_id, 'wi_id': wi_id }, context: this, success: function(data){ $(this).text("You've tagged this"); $(this).closest('.gl_buttons_holder').toggleClass('gl_buttons_holder gl_buttons_holder_tagged'); $(this).closest('.gl_buttons').addClass('tagged'); } });