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"));、(最初のケースでは) 間違ったオブジェクトが返され、2 番目には何も返されないことがわかった場合。

于 2012-07-11T23:31:22.903 に答える