0

オンライン Web サービスに対して jQuery Ajax 呼び出しを行いたいと考えています。しかし、私は成功した応答を得ることができません。なぜエラーが発生するのか混乱しています。

        var webMethod = "http://www.w3schools.com/webservices/tempconvert.asmx/CelsiusToFahrenheit?callback=?";
         var soap ='<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">  <soap:Body>     <CelsiusToFahrenheit xmlns="http://tempuri.org/"> <Celsius>12</Celsius> </CelsiusToFahrenheit>   </soap:Body> </soap:Envelope>';
        $j.ajax({
              type: "POST",
              url :webMethod,
              data: soap,
               dataType :"xml",
              contentType:"text/xml; charset=\"utf-8\"",
              cache:false,
              async: false,
            error:function(resp)
            {
                alert("Error :"+$j.parseXML(resp));
            },

        }).done(function(response){

                console.log(response);
                var xmlData =$j(response).find('FahrenheitToCelsiusResult').text();
                alert(xmlData);
            }); 

    });
4

1 に答える 1

0

なんらかの理由で中国でブロックされているため、w3schools に参加できません。

応答を XML として解析しようとしていますが、JSONP 呼び出しを行っています。www.w3schools.com 以外のサイトからリクエストを行っている場合は、同じオリジン ポリシーが原因で問題が発生します。

したがって、JavaScript からこの Web サービスを使用できる唯一の方法は、CORS ヘッダーを実装していて、IE 9 以下を使用していない場合です (jQuery は、IE 9 以下の ajax リクエストに cors を実装していません)。

サイトに CORS ヘッダーがまったくない場合は、Firefox 用の forcecors プラグインをインストールできます。インストール後、ビュー => ツールバー => アドオン バーを選択し、画面の右隅にある「cors」テキストをクリックします。これで、どこからでも XHR リクエストを作成できますが、プラグインをインストールして機能させる必要があるため、サイトのユーザーがそのプラグインをインストールしてアクティブにすることを期待できないため、テストと調整にのみ適しています。

?callback= も削除する必要があります。そうしないと、jQuery はリクエストを JSONP として扱い、xml レスポンスを取得するために失敗します。

于 2013-06-02T11:14:14.807 に答える