jQuery检测更改函数内部的ajax完成

时间:2013-11-08 14:41:11

标签: jquery

希望我的头衔没有误导性。我在改变事件中有一些ajax。例如:

$("#my-object").change(function(){
    $.get( ... );
});

是否可以通过调用change()检测ajax结束:

$("#my-object").change().functionToCallAfterAjaxInChangeCompleted();

到目前为止,我唯一的想法是在.change(function()..)本身写一些功能,但这不是我想要的方式。

3 个答案:

答案 0 :(得分:1)

您可以使用promise接口执行此操作:

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.get(...);

jqxhr.done(function () {
    functionToCallAfterAjaxInChangeCompleted()
});

答案 1 :(得分:1)

如果您使用.trigger()代替.change()来触发事件,则可以将其他参数传递给事件处理程序

$("#my-object").change(function(eventObj, additionalParam) {
    $.get(...).done(additionalParam.done);
}).trigger("change", { 
    done: function() {
        alert("ajax finished"); 
    }
});

Example

答案 2 :(得分:0)

JQuery documentation所述,您可以在成功回调中调用您的函数:

$("#my-object").change(function(){
  $.get( "someurl.com", function( data ) {
    ... // process your ajax data
    functionToCallAfterAjaxInChangeCompleted()
  });
});