Javascript 重复XMLHttpRequest请求
我的应用程序有一些jquery http调用和一些角度http调用 所以。。要向每个请求添加参数,我在代码的开头添加此代码Javascript 重复XMLHttpRequest请求,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我的应用程序有一些jquery http调用和一些角度http调用 所以。。要向每个请求添加参数,我在代码的开头添加此代码 var op = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function() { this.addEventListener("readystatechange", function() { if(this.readyState === 4 &&
var op = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function() {
this.addEventListener("readystatechange", function() {
if(this.readyState === 4 && this.status === 200 ){
// http call is done
}
}, false);
arguments[1] = arguments[1]+'?test=testParam';
var resp = op.apply(this, arguments);
return resp;
};
现在我想要两样东西
1) 我想在应用之前更改响应
2) 如果响应是404。。。。我想再打一个电话。。。。以回应为例。。。然后用一些新参数重复调用。简短的回答是,我们不能扩展
XMLHttpRequest
来重试连接,因为我们不能触发。如果触发了.onload
事件,就打开。编写同一个XMLHttpRequest
实例的几个.open
会导致每个.open
重写以前的.open
,但是一旦触发.onload
事件,我们就不能重用该实例(请求不发送),因此我们必须创建XMLHttpRequest
的另一个实例。因此,我认为最接近的方法是重用代码,如下所示:
var参数=106;
var div=document.getElementById(“重试”);
var div2=document.getElementById(“成功”);
var div3=document.getElementById(“响应”);
div.innerHTML=“正在尝试:”+param;
var xhr=new XMLHttpRequest();
xhr.open('GET','https://jsonplaceholder.typicode.com/posts/“+param);
xhr.onload=函数(){
如果(this.status==200){//这不符合主题…..我正在尝试生成一个拦截器,而不是递归拦截器calls@Michalis我更新了答案,使之更符合你的问题。