javascript
  • ajax
  • jquery
  • jquery-mobile
  • 2013-06-03 132 views 0 likes 
    0

    我无法访问webservice的响应请帮助我错误即将到来我已通过解析提醒它,但它显示错误null。我使用的在线Web服务无法获得来自Webservice的响应

     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); 
         }); 
    
    }); 
    
    +0

    你是否尝试单独提醒(或更好地使用'console.log')'resp'?没有'$ j.parseXML' – NicoSantangelo

    回答

    1

    这可能是一个跨域访问的问题。浏览器通常不会允许您通过AJAX获取远程数据。使用JSONP接口是解决此问题的通用解决方案。

    或者如果你有远程服务器的控制(在你的例子,这是不可能的),那么你可以添加标题:

    Access-Control-Allow-Origin: * 
    

    参见:Wikipedia

    我要补充的是另一种解决方案是在你的Javascript可以在本地进行通信的同一个域上制作你自己的本地脚本(例如PHP)。该脚本将处理实际的SOAP通信(因此不必担心交叉来源策略)并简单地返回结果。

    相关问题