我需要捕获所有ajax请求。我使用jQuery like here
$(document).ajaxSend(function (event, req, settings) {
console.log('Request Sent');
});
$(document).ajaxComplete(function (event, req, settings) {
console.log('Request Completed');
});
我可以有一些重复的请求(使用相同的URL)。也许有相同的数据。
Simple example
在这里,我两次调用loadBBC()。
问题:如何为第一个loadBBC和第二个loadBBC识别(匹配)ajaxSend / ajaxComplete?
我只想将所有 request_1 / response_1 , request_2 / response_2 一起保存。不是 request_1,request_2,response_2,response_1
我无法将settings.url或settings.data用作唯一值,因为它们可以重复使用。
由于
答案 0 :(得分:0)
我认为jQuery AJAX不支持第三方JS库。
所以我使用原生XMLHttpRequest并覆盖它。
我使用了these种方法并对其进行了修改(以便将来自发送()的请求和来自' readystatechange'事件的响应保存在一起)。
例如,您可以使用https://github.com/slorber/ajax-interceptor。并添加您自己的功能。
答案 1 :(得分:0)
如果我理解正确,您希望通过唯一值关联您的请求和回复。
您可以在jquery.ajax上使用上下文。这意味着你必须“放弃”加载,但由于它真的是ajax的包装器,除了一点点打字之外你不会丢失任何东西。
以下是使用您提供的类似代码的示例。
String htmlText = WikiModel.toHtml("This is a simple [[Hello World]] wiki tag");
});
答案 2 :(得分:0)
我的建议是,向全局ajaxSend
中的每个请求添加一个特定的侦听器,而不是两个未连接的侦听器。一个样本胜过千字:
$(document).ajaxSend(function (e, xhr, settings) {
xhr.always(function () {
//do something
});
});
always
是等效于ajaxComplete
的延迟方法。 Check other supported methods