如何使用ajax jQuery响应中传回的数据?

时间:2012-07-11 23:26:44

标签: ajax jquery response

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

1 个答案:

答案 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"));,你会看到它返回一个错误的对象(在第一种情况下),而在第二种情况下没有任何内容。