2016-08-20 96 views
-1

是否可以发送ajax请求,并拦截或查看HTML响应代码,然后对其执行操作?我有一个使用纯JS和XMLHttpRequest来看到像aborterror,并timeout事物的系统,但它会更有效追踪404和409S等拦截所有ajax结果并获得响应代码

这是我当前的代码这是本相当流行方法

(function(open) { 
      XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { 
       this.addEventListener("abort", function() { 
        self.trigger('abort'); 
       }, false); 
       this.addEventListener("error", function() { 
        self.trigger('error'); 
       }, false); 
       this.addEventListener("timeout", function() { 
        self.trigger('timeout'); 
       }, false); 
       this.addEventListener("load", function() { 
        self.trigger('load'); 
       }, false); 
       open.call(this, method, url, async, user, pass); 
      }; 
     })(XMLHttpRequest.prototype.open); 

但我正在打开HTTP响应代码。我也被绑定到jQuery,所以我可以使用任何jQuery设置选项提供,但到目前为止,我还没有看到获得响应代码的方式。

请注意我在寻找一个全球性的解决方案。我不能在每个ajax请求中添加100个单独的函数调用。

+1

中找到[此](http://stackoverflow.com/questions/5202296/add-a-hook-to-all-ajax-requests-on-一页)应该帮助 – BenG

+0

为什么你不能得到HTML响应代码? – Hydro

+0

没有意识到它很容易在'this.status'中找到 –

回答

-1

状态特性可以很容易地在this

(function(open) { 
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { 
    switch(this.status){ 
     // case 404: etc 
    } 
      open.call(this, method, url, async, user, pass); 
     }; 
    })(XMLHttpRequest.prototype.open);