在AJAX .done函数中添加类

时间:2017-12-20 12:09:38

标签: javascript jquery

我写了一个小脚本来添加调用.done函数的类,但是这个解决方案没有用。



$("#test").on("click", function() {

  var test = "foo bar";

  $.post({
    type: "POST",
    url: "test.php",
    data: {
      test: test
    }
  }).done(function() {
    $(this).parent().parent().addClass("success");
  });

});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td><a href="#" id="test">click me</a></td>
  </tr>
</table>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

回调内的

this不一样,它指的是ajax请求的jqXHR对象而不是事件处理程序绑定的元素,你应该先将它保存在外面,然后再使用它像变量一样:

$("#test").on("click", function() {
  var _this = $(this);
  var test = "foo bar";

  $.post({
    type: "POST",
    url: "test.php",
    data: {
      test: test
    }
  }).done(function() {
    _this.parent().parent().addClass("success");
  });

});

答案 1 :(得分:0)

以下是在Ajax调用中使用this的方法。首先在该变量中存储Node并使用that变量而不是此变量。我使用GET请求,但它也适用于POST请求。

$("#test").on("click",function(){
       var that = $(this);
        var postData ={};
        $.ajax({
  	    type:"GET",
  	    url: "https://ipinfo.io/json",//your url
          data:postData,
          success: function (msg) {
                   
             },
          error:function (xhr, ajaxOptions, thrownError){
					console.log("error occured  : " +thrownError)
          	} 
       	}).done(function() {
    $(that).parent().parent().addClass("success");
  });;
})
.success{
background-color : #fc0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td><a href="#" id="test">click me</a></td>
  </tr>
</table>