当前位置: 首页 > 面试题库 >

在ajax调用后,$(this)为何未定义

於宏大
2023-03-14
问题内容

单击锚标签并将ID设置为href时,我正在执行ajax请求。顺便说一句,该锚标记是动态创建的。

<a href="983" class="commentDeleteLink">delete</a>

单击锚标记后,将执行以下代码:

    $('.commentDeleteLink').live('click', function(event) {
        event.preventDefault();
        var result = confirm('Proceed?');

        if ( result ) {
            $.ajax({
                url: window.config.AJAX_REQUEST,
                type: "POST",
                data: { action       : 'DELCOMMENT',
                        comment      : $('#commentText').val(),
                        comment_id   : $(this).attr('href') },
                success: function(result) {
                    alert($(this).attr('href'));
                    //$(this).fadeOut(slow);
                }
            });
        }
    });

当我尝试显示$(this).attr(’href’)时,它说它是“未定义的”。我真正想做的是fadeOut锚标记,但是当我调查$(this)的值时,它是“未定义”的。

上面的代码段可能有什么问题?


问题答案:

你应该试试

$('.commentDeleteLink').live('click', function(event) {
    event.preventDefault();
    var result = confirm('Proceed?');
    var that = this;
    if ( result ) {
        $.ajax({
            url: window.config.AJAX_REQUEST,
            type: "POST",
            data: { action       : 'DELCOMMENT',
                    comment      : $('#commentText').val(),
                    comment_id   : $(this).attr('href') },
            success: function(result) {
                alert($(that).attr('href'));
                //$(that).fadeOut(slow);
            }
        });
    }
});

因为this在回调中不是clicked元素,所以您应该缓存this一个that可以重复使用并且对上下文不敏感的变量



 类似资料:
  • 问题内容: 我想知道为什么$(this)在jQuery ajax调用后不起作用。 我的代码是这样的。 为什么在ajax调用之后,$(this)在这种情况下不起作用?如果我在ajax之前使用它会起作用,但之后没有效果。 问题答案: 在jQuery ajax回调中,“ this”是对ajax请求中使用的选项的引用。它不是对DOM元素的引用。 您需要首先捕获“外部” $(this) :

  • 问题内容: 我有以下指令: 这是我如何调用它: 首次初始化指令时,则为空。稍后,通过ajax对其进行检索,并填充其值。 问题是,我怎么看待更新的价值?当我从链接方法执行此操作时: 初始化指令时,仅调用一次,然后该值为空。通过ajax(来自)检索值时,不会再次调用此watch函数。但是,在我要显示的页面的其他部分,该值在获取ajax请求时会更新。因此,我认为问题与在ajax请求之后执行无关。 编辑:

  • 问题内容: 我正在使用Vue.js创建一个组件。 当我引用中的任何所述的生命周期钩(,,等等)它的计算结果为: 我的计算属性内部也发生了同样的事情: 我收到以下错误: 未捕获的TypeError:无法读取未定义的属性“ bar” 为什么要在这些情况下进行评估? 问题答案: 这两个示例都使用arrow函数,该函数绑定到与Vue实例不同的上下文。 根据文档: 不要在实例属性或回调(例如)上使用箭头功能

  • 问题内容: 我正在执行以下ajax调用: 这是我的PHP: 创建销售后,我想重定向到addcust.php?New_sale = $ sale_id 我该怎么做? 问题答案: 您成功重定向: 无论您从PHP脚本回显什么,都将在中。因此,echo ,您将获得您的URL。

  • 问题内容: 我目前正在尝试返回数据库调用以填充下拉框。但是,当我循环浏览返回的列表时,出现“未定义回调”错误。我已经用两种方法尝试过此代码,但都没有用。 我试过了: 我也尝试过: 两者都给我错误: TypeError:回调未定义 返回的数据对象是我必须从中拉出两部分的数据库对象的列表。 如何解决此“回调”错误,以便可以在函数中使用数据? 问题答案: 回调是在其前任完成操作并返回值后立即执行的函数。

  • 问题内容: 我在站点的文档上有一些ajax调用,这些调用根据ajax状态显示或隐藏进度条 我想基本上在网站的其他部分覆盖这些方法,这些地方会进行许多快速的小型ajax调用,并且不需要弹出和弹出进度条。我试图将它们附加到其他$ .getJSON和$ .ajax调用中或将其插入。我已经尝试过将它们链接起来,但是显然那不好。 问题答案: 2018注意: 此答案已过时; 您可以随时对这个答案进行修改,以解