如何在AJAX请求后使用Jquery替换元素的文本

How to replace text of element after AJAX request using Jquery

本文关键字:替换 Jquery 元素 文本 AJAX 请求      更新时间:2023-09-26

我使用Jquery V1.11.1,我想在Jquery AJAX请求后替换HTML表中的单元格。我想要单元格中的结果。

    $(".permission").click(function(e) {
    var acoPath = $(this).siblings('th').text();
    var rowsLeft = $(this).prevUntil("th").length;
    var aroGroup = $('.aro').eq(rowsLeft).text();
    $.ajax({
        url: "/permissions/update",
        type: "POST",
        data: { aco : acoPath, aro : aroGroup },
        cache: false,
        dataType: "HTML",
        success: function (html) {
            $(this).html(html);
        }
        });
    });
});

当我单击所需单元格中的文本时,没有任何内容被替换。我怎样才能解决这个问题?

您需要将ajax调用中的上下文设置为当前对象。您可以使用ajax中的上下文选项:

context: this,

修改ajax调用:

$.ajax({
    url: "/permissions/update",
    type: "POST",
    context: this,
    data: { aco : acoPath, aro : aroGroup },
    cache: false,
    dataType: "HTML",
    success: function (html) {
        $(this).html(html);
    }
    });

您的上下文已更改。在‘click’功能中,this引用按钮。但是在回调函数中,上下文发生了变化。您应该首先将上下文保存到一个变量(var self)。

$(".permission").click(function(e) {
var acoPath = $(this).siblings('th').text();
var rowsLeft = $(this).prevUntil("th").length;
var aroGroup = $('.aro').eq(rowsLeft).text();
var self = this;
$.ajax({
    url: "/permissions/update",
    type: "POST",
    data: { aco : acoPath, aro : aroGroup },
    cache: false,
    dataType: "HTML",
    success: function (html) {
        self.html(html);
    }
    });
});

});