2013-06-03 3 views
0

Я не могу получить доступ к ответу веб-службы, пожалуйста, помогите мне, ошибка придет, я предупреждаю об этом, разобрав, но он показывает ошибку null. я использую онлайн webserviceне может получить ответ от 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

Я хотел бы добавить, что другое решение является создайте свой собственный локальный скрипт (например, PHP) в том же домене, с которым ваш Javascript может взаимодействовать локально. Сценарий будет обрабатывать фактическую связь SOAP (и, следовательно, не нужно беспокоиться о стратегиях перекрестного происхождения) и просто возвращает результат.