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

jQuery ajax成功不适用于$(this)吗?

翁翰墨
2023-03-14
问题内容

我一直在使用jQuery中的ajax工具,并且在成功执行ajax时使用$(this)遇到了问题。我想知道是否有可能在您的成功中使用$(this),正如我所见的教程使用它那样,但是当我尝试使用它时,它不起作用…但是,如果我使用$(document)或其他某种方法来获得它,我想要的对象工作正常…任何帮助将不胜感激,因为我对jQuery很陌生!提前致谢!我正在玩的代码如下:

$(".markRead").click(function() {
    var cId = $(this).parents("div").parents("div").find("#cId").val();
    var field = "IsRead";

    $.ajax({
        type: "POST",
        url: "ajax/contract_buttons.php",
        dataType: "text",
        data: "contractId=" + cId + "&updateField=" + field,
        async: false,
        success: function(response) {
            //$(this) doesnt recognize the calling object when in the success function...
            $(this).find("img").attr("src", "images/read.png");
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(xhr.statusText);
            alert(thrownError);
        }
    });
});

问题答案:

this总是引用当前的执行上下文,因此它不必像ajax成功处理程序那样在回调函数中保持不变。如果要引用它,则必须按照Dennis所指出的那样进行操作,并将其值保存到自己的局部变量中,以便以后可以引用它,即使实际this值可能已设置为其他值。这绝对是javascript的细微差别之一。将代码更改为此:

$(".markRead").click(function() {
    var cId = $(this).parents("div").parents("div").find("#cId").val();
    var field = "IsRead";
    var element = this;   // save for later use in callback

    $.ajax({
        type: "POST",
        url: "ajax/contract_buttons.php",
        dataType: "text",
        data: "contractId=" + cId + "&updateField=" + field,
        async: false,
        success: function(response) {
            //$(this) doesnt recognize the calling object when in the success function...
            $(element).find("img").attr("src", "images/read.png");
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(xhr.statusText);
            alert(thrownError);
        }
    });
});


 类似资料:
  • 我刚刚安装了 PyCharm 社区版 3.4.1,并尝试在其中制作一个简单的 pygame 项目。我发现代码完成以一种奇怪的方式运行。在这种情况下: 当我键入事件时会立即显示带有方法的完成弹出窗口。但在第二种情况下: 弹出窗口仅包含方法。 如何学习自动完成工具来更深入地查看库?

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

  • 问题内容: 我的PHP代码将JSON数据返回到jquery自动完成功能,但是自动完成功能不起作用 jQuery自动完成 PHP代码 JSON数据输出 在输入“ Ga”时,我在前端得到了空的li标签。 问题答案: 从: http://jqueryui.com/demos/autocomplete/ 您的JSON需要包含或(或两者)。更改为,它应该可以正常工作。

  • API 2:GET:/school/student/all

  • 问题内容: 我使用Eclipse Oxygen.2 Release(4.7.2) 我尝试了一些lambda表达式,并遇到以下问题: 我编写不带类型的lambda参数,Eclipse自动完成效果很好: 如果我编写具有类型的lambda参数,则不会自动完成: 但是我可以自己编写,并且一切正常: 这是Eclipse中的错误吗?有人可以解释这种行为吗? 问题答案: Yes, this is a known

  • 我在一个网站上工作,遇到了一个问题,点击我的“删除”链接会出现一个错误页面。在localhost上运行良好-无法理解为什么在Heroku站点上会有所不同。 有人知道这是怎么回事吗? 我的“图片”控制器: 我的图片/新视图: 以下是我尝试删除图片时的heroku日志(从导航到新图片页面开始(同一视图中的新建和编辑功能): 2015-11-15T16:13:49.189857 00:00 heroku