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