0

wsf.cdyne.com/WeatherWS/Weather.asmx が提供する天気 Web サービスを利用しようとしています。URI " ' http://wsf.cdyne.com/WeatherWS/Weather.asmx/GetCityForecastByZIP?ZIP= ' + zipcode"を使用して、XML 形式で応答を取得できると確信しています。

そこで、XmlHttpRequest を使用して上記の uri を送信します。ステータスを監視するアラートをいくつか追加しました。open() の後、readyState は 1 です。その後、他の応答を取得できません。「xmlHttpRequest.onreadystatechange = processRequest;」ステートメントを削除すると、send() の後に応答が表示されません。ですから、誰かが何が間違っているかを確認するのを手伝ってくれることを願っています。

    <html>  
    <head>  
    <title>weather app</title>  
    </head>  
    <body>
        <script language="JavaScript">
        function httpGet()
        {
            var xmlHttp;  
            if (window.XMLHttpRequest) {  
                xmlHttp = new XMLHttpRequest();  
                if (xmlHttp.overrideMimeType)  
                    xmlHttp.overrideMimeType('text/xml');  
            } 
            else if (window.ActiveXObject) {  
                try {  
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");  
                } 
                catch (e) {  
                    try {  
                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
                    } 
                    catch (e) { 
                    }
                }  
            }  

            xmlHttp.open( "GET", "http://wsf.cdyne.com/WeatherWS/Weather.asmx/GetCityForecastByZIP?ZIP=85281", false );
            alert("1 " +xmlHttp.readyState);
            xmlHttpRequest.onreadystatechange = processRequest;
            alert("2 " +xmlHttp.readyState);
            xmlHttp.send();
            alert("3 " +xmlHttp.readyState);


            document.write(xmlHttp.responseText);
            return xmlHttp.responseText;
        }

        httpGet();

        </script>
    </body>  
    </html>                 
4

1 に答える 1

1

@robertklep が正しく述べているように、このリクエストはクロスドメインです。ブラウザーは、セキュリティ対策としてクロスブラウザー リクエストを許可しないため、サイトなどでユーザーのセッションをハイジャックすることはありません。

動作させるには、ローカル サイトにプロキシを作成します。サイトが JSONP クロスドメインの使用をサポートしている場合は、それを使用できます。

詳細については、クロスドメイン ポリシーに関する情報を検索するか、API ドキュメントがある場合は、問題に関する情報も含まれている可能性があります。

于 2013-03-16T19:55:37.300 に答える