我正在尝试使用jQuery ajax请求的响应来设置具有特定id的div的innerHTML。这是我正在使用的代码:
$(".show_comments").click(function(){
var articleName = $(this).closest("article").find(".articlename").attr('id')
$.ajax({
url: "commentView.php",
data: { 'articleName': articleName },
cache: false,
dataType: "html", // so that it will auto parse it as html
success: function(response){
$(this).closest("article").find(".comments").html(response);
}
});
然而,它似乎根本没有做任何事情,我已经尝试了谷歌搜索,但我能找到的一切都说我按照我的方式去做...我已经在Firebug和ajax请求中进行了测试正在给我一些我想要它的确切响应...但是我无法访问它以将div的innerHTML设置为响应!
答案 0 :(得分:2)
在你的ajax成功处理程序中,还有另一个范围和this
点,而不是你的想法。所以将代码更改为:
var articleName = $(this).closest("article").find(".articlename").attr('id'),
that = this;
$.ajax({
url: "commentView.php",
data: { 'articleName': articleName },
cache: false,
dataType: "html", // so that it will auto parse it as html
success: function(response){
$(that).closest("article").find(".comments").html(response);
}
});
我改变了什么:我添加了指向that
实例的this
变量,并在成功处理程序中使用它。
你将如何自己调试:如果你试图输出console.log(this)
和console.log($(this).closest("article").find(".comments"));
,你会看到它返回一个错误的对象(在第一种情况下),而在第二种情况下没有任何内容。