首页 > 解决方案 > 拦截任何请求 - javascript

问题描述

我有一个网页说-sample-page.html里面有2个链接-

sample-page.html
- 链接 1 (GET, ajax)
- 链接 2 (GET, 新页面)

当我单击link1一个 ajaxGET请求时,它仍然停留在示例中page.html。当我单击link2另一个 get 请求时,sample-page2 将出现一个新页面。

为了拦截这两个请求,我编写了这样的 javascript 代码 -

    //attempt-1 : javascript
    (function (send) {

        XMLHttpRequest.prototype.send = function () {
            this.setRequestHeader('some-header-param', 'some-value');
            send.apply(this, arguments);
        };

    })(XMLHttpRequest.prototype.send);

    //attempt-2: jquery 
    /*$.ajaxSetup({
        beforeSend: function (xhr,settings) {
           xhr.setRequestHeader('some-header', 'some-header-value');
       }
      }); */

以上,两种尝试都成功地拦截了来自link1. 但上述代码片段都无法拦截来自link2. 谁能帮助如何拦截这两个请求?

提前致谢。

标签: javascriptjqueryajaxxmlhttprequest

解决方案


您可以通过使用 javascript event.preventDefault() 功能来做到这一点。为该元素上的 onclick 编写一个事件侦听器。执行您想要的任何功能并调用 event.preventDefault() 如果您想停止发送请求,否则保持原样。

<a id='some_id'>click here</a>

document.getElementById('some_id').addEventListener('click',function(event){
    //do whatever you want.
    //If you want to stop the request.
    if(need_to_stop){
        event.preventDefault();
    }
})

推荐阅读