仅限JavaScript:监视页面上的任何AJAX请求

仅限JavaScript:监视页面上的任何AJAX请求,javascript,ajax,response,Javascript,Ajax,Response,我的页面中有一些脚本文件无法访问,因为它们是从其他源加载到我的页面的。(解释起来有点复杂) 这些脚本有AJAX请求,所以我想在它们的响应中做一些工作 JavaScript(而不是jQuery)中是否有任何方法可以监视页面上的任何AJAX请求,以便在这些AJAX完成请求后执行某些操作(这些AJAX请求反正不在我手里)这里有一些我用来“劫持”任何XHR(AJAX)请求的本地JavaScript,你应该能够接受它并使用它运行(取决于你有多好,lol)。我评论了您感兴趣的部分:) 除了重写本机XMLHt

我的页面中有一些脚本文件无法访问,因为它们是从其他源加载到我的页面的。(解释起来有点复杂)

这些脚本有AJAX请求,所以我想在它们的响应中做一些工作


JavaScript(而不是jQuery)中是否有任何方法可以监视页面上的任何AJAX请求,以便在这些AJAX完成请求后执行某些操作
(这些AJAX请求反正不在我手里)

这里有一些我用来“劫持”任何XHR(AJAX)请求的本地JavaScript,你应该能够接受它并使用它运行(取决于你有多好,lol)。我评论了您感兴趣的部分:)


除了重写本机XMLHttpRequest函数之外,没有其他方法可以做到这一点。@adeneo是的,它有可能超越该函数并将其放在最后一个js中file@Vikram,当AJAX启动时,无论您是否删除函数或其他内容……您将其放在代码中的什么位置?你可以把html中包含的脚本放在你的原始帖子中吗?我已经把它放在标签里了。是的,但是在你包含的其他脚本之前或之后?当你定义脚本时,你能用HTML中的内容更新你的问题吗?因为这个脚本确实有效,所以我使用它作为一种简单的方法来劫持旧平台上的任何ajax请求,以便在重写时操作数据以适应新平台。我认为这些请求是JSONP而不是XHR标准。无论如何,我把答案标对了,因为我的帖子里没有标注。谢谢。啊,好的。您不必这样做,但希望代码能帮助其他人:)
var xmlreqc = XMLHttpRequest;
XMLHttpRequest = function ()
{
    try
    {
        this.xhr = new xmlreqc();
        return this;
    }
    catch (e) 
    {
        alert(e.message);
        return null;
    }
};

XMLHttpRequest.prototype.open = function (method, url, async, user, password)
{
    try
    {
        return this.xhr.open(method, url, async, user, password); //send it on
    }
    catch (e) 
    {
        alert(e.message);
        return null;
    }
};

XMLHttpRequest.prototype.setRequestHeader = function (header, value)
{
    try
    {
        this.xhr.setRequestHeader(header, value);
    }
    catch (e) 
    {
        alert(e.message);
    }
};

XMLHttpRequest.prototype.send = function (postBody)
{
    var myXHR = null;
    try
    {
        myXHR = this;
        this.xhr.onreadystatechange = function () { myXHR.onreadystatechangefunction(); };
        this.xhr.send(postBody);
    }
    catch (e) 
    {
        alert(e.message); 
    }
};

XMLHttpRequest.prototype.onreadystatechangefunction = function ()
{
    try
    {
        if (this.xhr.readyState == 4)
        {
            //here you will do whatever you want with the response, then send it onwards as if nothing happened
        }
        this.readyState = this.xhr.readyState;
        this.responseText = this.xhr.responseText;
        this.responseXML = this.xhr.responseXML;
        this.status = this.xhr.status;
        this.statusText = this.xhr.statusText;
    }
    catch (e) 
    {
        alert(e.message);
    }
    this.onreadystatechange();
};