检测一个ajax请求的请求URL

时间:2019-02-04 09:15:05

标签: javascript php jquery ajax codeigniter-3

因此,我已使用以下功能检测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。我有很多这样的功能。收到网址后,我想在网址末尾附加?debug = 1 。我尝试过alert(this.url);,但返回的是未定义。任何帮助将不胜感激。提前致谢。

修改

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请求的网址,并且还附加了?debug = 1 。当我console.log(response);时,我看到URL被更改了,但仍然看不到任何错误。请让我知道我必须为此做其他事情。

1 个答案:

答案 0 :(得分:1)

经过大量搜索后,这是执行此操作的最佳方法。虽然仅在铬上测试。

IEnumerable<Person>