0

Web サービスの応答にアクセスできません。エラーが発生するのを手伝ってください。解析してアラートを出しましたが、エラー null が表示されています。オンライン Web サービスを使用しています

     var webMethod = "http://www.w3schools.com/webservices/tempconvert.asmx/CelsiusToFahrenheit";
     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

1

おそらくクロスオリジンアクセスの問題です。ブラウザは通常、AJAX 経由でリモート データをフェッチすることを許可しません。この問題の一般的な回避策は、JSONP インターフェイスを使用することです。

または、リモートサーバーを制御している場合(この例ではこれはありそうにありません)、ヘッダーを追加できます:

Access-Control-Allow-Origin: *

参照:ウィキペディア

別の解決策は、Javascript がローカルで通信できる同じドメインに独自のローカル スクリプト (PHP など) を作成することです。スクリプトは実際の SOAP 通信を処理し (したがって、クロス オリジン ポリシーについて心配する必要はありません)、単純に結果を返します。

于 2013-06-03T04:58:27.533 に答える