小编典典

Ajax jQuery成功范围

ajax

我有这个Ajax呼叫doop.php

    function doop(){
        var old = $(this).siblings('.old').html();
        var new = $(this).siblings('.new').val();

        $.ajax({
            url: 'doop.php',
            type: 'POST',
            data: 'before=' + old + '&after=' + new,
            success: function(resp) {
                if(resp == 1) {
                    $(this).siblings('.old').html(new);
                }
            }
        });

        return false;
    }

我的问题是,$(this).siblings('.old').html(new);生产线没有按预期进行。

谢谢..所有有用的评论/答案都被投票了。

更新: 问题的一半似乎是范围(感谢帮助我阐明这一问题的答案),但另一半是我试图以同步方式使用ajax。我创建了一个新帖子


阅读 229

收藏
2020-07-26

共1个答案

小编典典

首先new一个保留字。您需要重命名该变量。

要回答您的问题,是的,您需要保存this在成功回调之外的变量中,并在成功处理程序代码中引用它:

var that = this;
$.ajax({
    // ...
    success: function(resp) {
        if(resp == 1) {
            $(that).siblings('.old').html($new);
        }
    }
})

这称为关闭

2020-07-26