2

私はhtmlソースコードを取得するためにいくつかのコードを書きましたが、それはIE8でのみ動作しますが、mozilaとchromeでは動作しません。問題は何ですか。提案をお願いします。私のコード

<script>

        function processStateChange() {
            statusDiv = document.getElementById("stats");
            if (req.readyState == 0) { statusDiv.innerHTML = "UNINITIALIZED"; }
            if (req.readyState == 1) { statusDiv.innerHTML = "LOADING"; }
            if (req.readyState == 2) { statusDiv.innerHTML = "LOADED"; }
            if (req.readyState == 3) { statusDiv.innerHTML = "INTERACTIVE"; }
            if (req.readyState == 4) {
                statusDiv.innerHTML = "COMPLETE";
                statusDiv.innerHTML = req.responseText;
            }
        }
        function GetXmlHttpObject() {
            if (window.XMLHttpRequest) {  // code for IE7+, Firefox, Chrome, Opera, Safari
                return new XMLHttpRequest();
            } if (window.ActiveXObject) {  // code for IE6, IE5 
                return new ActiveXObject("Microsoft.XMLHTTP");
            } return null;
        }
        //req = new XMLHttpRequest("Msxml2.XMLHTTP");     
        req = GetXmlHttpObject();
        debugger;
        if (req) {
            req.onreadystatechange = processStateChange;
            req.open("GET", "http://whatismyipaddress.com/", true);            
            req.send();
        }

    </script>

コードをデバッグするためにチェックしましたIEはループを完全に機能していました(最終的に応答テキストを取得するためにreq.readystate == 4)が、mozilaまたはchromesはループのみを機能しています(ループを中止した後はreq.readystate == 2)、何ですか問題、jqueryまたはjavaスクリプトを使用して問題を解決するための提案をお願いします

ありがとうヘマンス

4

1 に答える 1

4

同一生成元ポリシーの制限により、クロスドメインAJAX呼び出しを送信することはできません。これがIEで機能する理由は、おそらく、いくつかのバグがあり、そのようなAJAXリクエストを許可する古い恐竜バージョンのIEを使用しているためです。しかし、最近のブラウザではそれができません。

AJAXリクエストは、AJAXリクエストを送信するjavascriptコードを含むページを作成したドメインにのみ送信できます。

リモートドメインに対する制御のレベルに応じて、いくつかの回避策があります。あなたの場合、私はあなたがを制御できないと思いますhttp://whatismyipaddress.com/。したがって、唯一のオプションは、ドメインとリモートドメイン間のブリッジとして機能するサーバー側スクリプトをドメインに記述し、AJAXリクエストをスクリプトに送信することです。

req.open("GET", "/myscript", true); 
于 2012-08-20T12:25:24.397 に答える