$ .ajax上下文选项

yayQuery播客的第11集提到$ .ajax上下文选项。我将如何在成功回调中使用此选项?我目前正在做的是将我的输入参数传递回成功回调,以便可以对成功/错误之后调用的ID进行动画处理。如果使用context选项,那么也许不必从调用的例程中传回参数。


在此示例中,我将STATEID传递回成功字段,以便在将状态从DOM中删除后将其从DOM中删除:


$('td.delete').click(function() {

  var confirm = window.confirm('Are you sure?');

  if (confirm) {

    var StateID = $(this).parents('tr').attr('id');

    $.ajax({

      url: 'Remote/State.cfc',

      data: {

        method: 'Delete',

        'StateID': StateID

      },

      success: function(result) {

        if (result.MSG == '') {

          $('#' + result.STATEID).remove();

        } else {

          $('#msg').text(result.MSG).addClass('err');;

        };

      }

    });

  }

});


浮云间
浏览 562回答 2
2回答

桃花长相依

所context要做的就是this在回调中设置的值。因此,如果您在事件处理程序中,并且希望this在回调中将其作为接收事件的元素,则可以这样做:context:this,success:function() {    // "this" is whatever the value was where this ajax call was made}如果您希望将其设置为其他类型,则只需进行设置即可,并this引用该类型:context:{some:'value'},success:function() {    // "this" the object you passed    alert( this.some ); // "value"}在添加到问题中的代码中,可以使用StateID,但实际上并不需要,因为您已经可以访问该变量。var StateID = $(this).parents('tr').attr('id');$.ajax({    url: 'Remote/State.cfc'    ,data: {        method:'Delete'        ,'StateID':StateID    }    ,context: StateID    ,success: function(result){        alert(this);     // the value of StateID        alert(StateID);  // same as above        if (result.MSG == '') {            $('#' + result.STATEID).remove();        } else {            $('#msg').text(result.MSG).addClass('err');;        };    }});

holdtom

如果您设置了上下文选项,那么this成功就是您为设置的值context。因此,如果您传递一个包含输入参数名称和值的对象文字作为上下文,则可以成功使用this.param1第一个输入参数的值。有关更多信息,请参见.ajax()文档。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery