如何捕获页面上的所有请求和响应,并根据每个响应状态的需要执行操作
how to capture all requests and response on the page and perform action accordin to need on every response status
是他们监视由脚本,单击或其他任何东西触发的页面上发出的所有请求的任何方法,它不应该依赖于任何脚本块或代码,只需监视请求发出的内容,使用jquery和javascript。
例:
监视页面上发出的所有请求。
monitor{
success:function(){
}
error:function(){
}
}
您无法跟踪网页上发出的所有请求。但是,您可以通过替换 $.ajax bay 包装器来跟踪使用 jQuery 发出的请求。
示例替换插件:
(function($, undefined) {
// a private variable which will store the current active monitors
var monitors = [];
// a public API to add a monitor.
$.monitorAjax = function(monitor) {
monitors.push(monitor);
};
// here starts the implementation.
// a function to wrap a callback (error or success) to make monitors functions called.
var wrapCallback = function(name, settings) {
return function() {
for(var i = 0; i < monitors.length; i++) {
var monitor = monitors[i];
if(monitor[name] != null) monitor[name].apply(this, arguments);
}
if(settings[name] != null) settings[name].apply(this, arguments);
};
};
// replace $.ajax by a wraped version which will replace success and error callbacks by wrappers.
// note that you may also track calls and their settings if you want.
var unwrappedAjax = $.ajax;
$.ajax = function(url, settings) {
if(settings == null) settings = {};
var wrappedSuccess = wrapCallback("success", settings);
var wrappedError = wrapCallback("error", settings);
var wrappedSettings = $.extend({}, settings, {success: wrappedSuccess, error: wrappedError});
return unwrappedAjax(url, wrappedSettings);
};
})(jQuery);
在jQuery中,也许是这样的:
var original_jquery_ajax=$.ajax;
$.ajax=function(){
var a_fn, a_url;
var cb=function(data, status, settings){
a_fn(data, status, settings);
console.log(a_url, data); // <-- here
}
for(var i=0; i<arguments.length; i++)
if(arguments[i] instanceof Object){
if(arguments[i].success){
a_fn=arguments[i].success; arguments[i].success=cb;
}
if(arguments[i].url) a_url=arguments[i].url;
}
if(typeof(arguments[0])=="string") a_url=argements[0];
var aj=original_jquery_ajax.apply(null,arguments);
var done_original=aj.done;
aj.done=function(cb_fn){
a_fn=cb_fn;
done_original(cb);
return aj;
};
return aj;
};
现在,当使用 $.ajax(url) 时,您在控制台中拥有 url 和返回的数据
相关文章:
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- 带Jquery的wep API,加载资源失败:服务器响应状态为404(未找到)
- 从服务器到客户端的响应状态
- 如何捕获页面上的所有请求和响应,并根据每个响应状态的需要执行操作
- AngularJS:捕获所有响应状态 500
- 错误:调用 waitForCondition 时错误响应状态:13
- React子组件不响应状态更改
- Ajax/JSON服务器的响应状态为415(不支持的媒体类型)
- 未能加载资源:服务器的响应状态为412(前提条件失败)
- 未能加载资源:服务器的响应状态为405(不允许使用方法)
- 基于发布值的XMLHttpRequest响应状态
- ReactJs:响应状态更改而更改状态
- Spring RequestMapping错误:服务器的响应状态为404(未找到)
- jQuery..load() 不会给出响应/状态
- Steam Post请求-加载资源失败:服务器的响应状态为400(错误请求)
- 加载资源失败:服务器使用Ajax响应状态为500
- ajax调用中没有响应状态,不确定原因
- 在Google可视化API中访问响应状态
- Ajax错误:加载资源失败:服务器响应状态为500(内部服务器错误)
- Ajax响应状态为200,但显示错误消息