簡體   English   中英

如何對在線Web服務進行Ajax調用?

[英]How to make an Ajax call to an online web service?

我想對在線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);
            }); 

    });

由於某些原因在中國被封鎖,我不能去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響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM