订阅jQuery.ajax()成功事件

时间:2015-10-23 05:19:26

标签: javascript jquery ajax

我有一个让$.ajax致电的js,在成功的时候,我需要做点什么。典型的实现方式如下:



$.ajax({
    url: "/Sales/Quotations/LinkQuotabtleItemToSites",
    type: "POST",
    success: function (data) {
        // do something
    }
});



 问题是,这个js函数是由另一个开发人员开发的,我依赖于ajax成功调用。我想知道是否有一种简单的方法来订阅成功事件并在我自己的js文件中处理它

2 个答案:

答案 0 :(得分:4)

ajaxSuccess将是您的朋友:https://api.jquery.com/ajaxSuccess/

  

附加要在Ajax请求成功完成时执行的函数。这是一个Ajax事件。

$(document).ajaxSuccess(function(event, xhr, settings) {
  console.log('hello !');
});

但有了这个,你会听到每个ajax成功事件。因此,如果您只需要听一个请求,则可能需要执行dhis:

$(document).ajaxSuccess(function(event, xhr, settings) {
  if (settings.url == '/foo/bar/somefile') {
      console.log('hello !');
  }
});

答案 1 :(得分:0)

您可以使用自定义事件:

$('.my-link').click(function() {
  $.ajax({
    url: "/Sales/Quotations/LinkQuotabtleItemToSites",
    type: "POST",
    success: function(response) {
      $(document).trigger('mynamespace:mytrigger', [response]);
    }
  });
});

// Developer 1 listens:
$(document).on('mynamespace:mytrigger', function (event, response) {
  console.log('Listener 1 and response is:', response);
});


// Developer 2 listens in some other place:
$(document).on('mynamespace:mytrigger', function (event, response) {
  console.log('Listener 2 and response is:', response);
});