1

我正在开发一个 ASP.NET MVC 3 Web 应用程序。我需要捕获来自我的 Web 界面的任何 Web 请求,并将一些值添加到其标题中。所以我正在搜索如何使用 Javascript 检测来自网络浏览器的 http 请求。我不知道这是否可能。

我尝试了这个 Ajax 请求并且它有效。

    function loadXMLDoc() {

        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            window.XmlHttpRequest = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            window.XmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }

          window.XmlHttpRequest.onreadystatechange = function () {
          alert(window.XmlHttpRequest.readyState + "  " + window.XmlHttpRequest.status);

          if (window.XmlHttpRequest.readyState == 4 && window.XmlHttpRequest.status == 200) {
             document.getElementById("myDiv").innerHTML = window.XmlHttpRequest.responseText;
          }
        };

        window.XmlHttpRequest.open("GET", "@Url.Action("TestActionForJScripts","User")", true);
        window.XmlHttpRequest.setRequestHeader("TestKey", "TestValue");
        window.XmlHttpRequest.send();
    }

但我不需要创建请求对象。我正在尝试捕获从按钮、链接等生成的请求。

4

1 回答 1

3
window.XmlHttpRequest = new XMLHttpRequest();

XmlHttpRequest由于它的大写名称,它看起来像一个构造函数。你应该

  • 将其重命名为小写,这样更容易混淆,或者至少使用类似MyXhrInstance...
  • 使其成为该函数的局部变量,而不是window对象的全局属性

捕获来自我的 Web 界面的任何 Web 请求

你应该使用一个库函数,或者至少使用一些通用的东西作为你的function loadXMLDoc()无处不在。不需要到处都这样,遵循 DRY 原则。例如,使用该函数的参数使其具有适应性,而不是使用固定的 url。

...并在其标题中添加一些值

仅在常用功能中执行此操作。

于 2012-06-08T12:00:17.170 回答