订阅 jQuery.ajax() 成功事件
Posted
技术标签:
【中文标题】订阅 jQuery.ajax() 成功事件【英文标题】:subscribe to jQuery.ajax() success event 【发布时间】:2016-01-22 13:49:46 【问题描述】:我有一个调用$.ajax
的js,如果成功,我需要做点什么。典型的实现如下:
$.ajax(
url: "/Sales/Quotations/LinkQuotabtleItemToSites",
type: "POST",
success: function (data)
// do something
);
问题是,这个 js 函数是由另一个开发人员开发的,我依赖于那个 ajax 成功调用。我想知道是否有一种简单的方法来订阅成功事件并在我自己的 js 文件中处理它
【问题讨论】:
只是想确认一下,这是您想要完成项目的唯一 Ajax 调用吗? 到目前为止,是的,但我不知道将来我的逻辑是否会依赖于其他 ajax 调用(业务规则更改......你看) binaryintellect.net/articles/… 尝试按照上面的操作 “订阅”成功事件听起来是个可怕的想法。 “所以我们都是独立工作,不会覆盖彼此的更改”。我确信您确实需要使用version control。这就是全世界程序员的工作方式。请阅读这些文章:***.com/questions/1408450/… 和 ***.com/questions/2658/… 感谢 Ram 的链接,是否可以订阅特定呼叫,然后拥有全局回调处理程序? 【参考方案1】: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 !');
);
【讨论】:
【参考方案2】:您可以使用自定义事件:
$('.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);
);
【讨论】:
以上是关于订阅 jQuery.ajax() 成功事件的主要内容,如果未能解决你的问题,请参考以下文章
jquery ajax 放在重复点击事件beforeSend方法
Mailchimp API V3 jQuery Ajax POST 订阅者
Mailchimp API V3 jQuery Ajax POST 订阅者