1

ASP.NET MVC 3 Web アプリケーションを開発しています。Web インターフェースから送信される Web リクエストをキャッチし、そのヘッダーにいくつかの値を追加する必要があります。そこで、Javascript を使用して、Web ブラウザーからの 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 に答える