jQuery仅在执行上一个函数的ajax时调用函数

时间:2012-11-18 15:21:01

标签: javascript jquery callback

我有以下问题:

$('#id').on('click', '.class', function(){
 // it is doing something and
 // executing AJAX request
 // with the data from request it is doing something
} // this is onclick handler

稍后在代码中我也需要执行它,并且在执行之后我需要运行另一个依赖于此onclick handler的ajax执行的函数,所以我正在做这样的事情

$('#id .class').click();
anotherFunction();

它不起作用。这个问题是可以理解的,因为ajax请求还没有完成。

我尝试使用Deferred object的想法来实现正确的执行。

$.when( $('#id .class').click() ).then( anotherFunction() );

使用带回调的自动执行函数的想法:

(function(o, callback){
    $('#id .class').click()
})(null, anotherFunction() );

这两个想法都失败了。

有没有办法在不修改anotherFunction()onclick function的情况下实现预期的功能?

1 个答案:

答案 0 :(得分:0)

不确定我是否完全理解您的问题,但是什么阻止您在相应的$ .ajax响应方法中执行onsuccess / onerror代码?

$.ajax({
  type: 'POST',
  url: "your url",
  data: "your data",
  error: function(jqXHR, textStatus, errorThrown) { ... },
  success: function (data, textStatus, jqXHR) { ... }
});

另外,为什么不把ajax执行部分放到自己的函数中并从事件处理程序和其他所有地方调用它,像这样?

function ajaxMe(onerror, onsuccess)
{
    $.ajax({
      type: 'POST',
      url: "your url",
      data: "your data",
      error: function(jqXHR, textStatus, errorThrown) { onerror(...) },
      success: function (data, textStatus, jqXHR) { onsuccess(...) }
    });
}