0

我正在尝试使用来自 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 设置为响应!

4

1 回答 1

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"));您会看到它返回一个错误的对象(在第一种情况下),而在第二种情况下什么也没有。

于 2012-07-11T23:31:22.903 回答