从外部函数检测ajax调用结束

时间:2018-08-27 10:14:19

标签: javascript jquery ajax

我在一个项目中工作,该项目已使用JavaScript创建了用于进行一些Ajax调用的插件。我不允许更改插件中的代码。

插件中有一个按钮类,单击该按钮类将执行ajax并更改数据库中的字段,并根据返回的布尔值更改单击的按钮的文本颜色。有一个类似按钮的动态列表(按钮的数量没有固定),每个按钮都以相同的方式对数据库进行更改,并根据返回的布尔值分配状态。

现在,当单击这些按钮中的任何一个时,我需要检查每种状态下的按钮数量并将结果输出到控制台。

我正在用$(document).on('click', 'button.plugin-button', function() {})检测到按钮单击,但是它没有给我正确的结果,因为ajax是从插件代码内部执行的,而我的按钮单击处理程序是在ajax之前执行的。

有什么方法可以检测到AJAX的执行情况,完成后是否可以调用我的点击处理程序并显示正确的结果?

1 个答案:

答案 0 :(得分:3)

您可以使用ajaxComplete

$( document ).ajaxComplete(function( event, xhr, settings ) {
if ( settings.url === "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
  xhr.responseText);
}});

之类的回调函数
function checkButtonsState(){}
function makeAjaxRequest(para1, para2, callback){
/*onsuccess or on error complete*/
callback();
}
/*call it like*/
makeAjaxRequest("para1","para2", checkButtonsState)