检测Ajax请求的请求URL

问题描述 投票:2回答:1

所以我用下面的函数来检测一个Ajax调用。

var oldXHR = window.XMLHttpRequest;

function newXHR() {
    var realXHR = new oldXHR();
    realXHR.addEventListener("readystatechange", function() {
        if(realXHR.readyState==1){
            alert('server connection established');
        }
        if(realXHR.readyState==2){
            alert('request received');
        }
        if(realXHR.readyState==3){
            alert('processing request');
        }
        if(realXHR.readyState==4){
            alert('request finished and response is ready');
        }
    }, false);
    return realXHR;
}
window.XMLHttpRequest = newXHR;

这是工作,但现在我需要特定的Ajax请求的URL。我有一个像下面的功能: -

function loadFundSimulation(num_days = ''){
    var url = "<?php echo site_url('investment_plan/simulation/FUND'); ?>";

        $.post(url, data).done(function (response,status,xhr) {
             #....code....#
        }).fail(function (data) {
            #....code....#
        });
}

当AJAX被称为当时我想的这个功能网址。我有很多这样的功能。当我得到的URL我要追加?调试= 1在网址的结尾。我曾尝试alert(this.url);但它返回undefined。任何帮助将不胜感激。提前致谢。

编辑

var open = XMLHttpRequest.prototype.open;

XMLHttpRequest.prototype.open = function(method, uri, async, user, pass) {
    this.addEventListener("readystatechange", function(event) {  
    if(this.readyState == 4){
       var self = this;
       var response = {
         method: method,
         uri: uri,
         responseText: self.responseText
      };
      response.uri = uri + '?debug=1';
      console.log(response);  
    } else {
        console.log(this.readyState);
    }
    }, false);
  open.call(this, method, uri, async, user, pass);
};

我已经得到了Ajax请求的URL和我追加?调试= 1为好。当我console.log(response);我看到网址被改变,但我仍然没有看到任何错误。请让我知道我必须做别的了点。

javascript php jquery ajax codeigniter-3
1个回答
1
投票

搜索了很多之后,这是做到这一点的最好办法。虽然对铬只测试。

(function() {
        var proxied = window.XMLHttpRequest.prototype.open;
        window.XMLHttpRequest.prototype.open = function() {
            arguments[1] = arguments[1] + '&debug=1';
            console.log( arguments[1] );
            return proxied.apply(this, [].slice.call(arguments));
        };
    })();
© www.soinside.com 2019 - 2024. All rights reserved.