繁体   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