Использование веб-службы с использованием Javascript

Есть ли способ использовать веб-службу с помощью JavaScript? Я ищу встроенный способ сделать это, использование фреймворка JavaScript не вариант.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
14
0
39 008
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Вы можете использовать объект XMLHttpRequest, но поскольку вы не хотите использовать какие-либо инфраструктуры JavaScript, вам придется самостоятельно маршалировать и демаршалировать конверты SOAP.

Вам нужно беспокоиться только о конвертах SOAP, если это веб-сервис SOAP. Некоторые успокаивающие веб-службы можно просто вызвать и прочитать результаты без какой-либо предварительной обработки.

brien 16.10.2008 14:46

Вы можете создать XMLHttpRequest, если служба размещена в вашем домене. В противном случае у вас возникнут проблемы с междоменными доменами.

s / could / will / если не ошибаюсь.

Chris Vest 16.10.2008 14:45

Да, ты прав. Каждый раз, когда возникает вопрос о междоменном использовании, я немного не понимаю, каковы точные правила. Я просто стараюсь полностью избегать этих проблем;)

brien 16.10.2008 14:46

Что конкретно вы имеете в виду под «междоменными проблемами»?

Anderson Green 09.09.2012 08:10
Ответ принят как подходящий

Вы можете использовать веб-службу с помощью JavaScript изначально, используя объект XmlHttpRequest. Однако создание экземпляра этого объекта зависит от браузера. Например, Firefox и IE 7+ позволяют создавать его как собственный объект JavaScript, но IE6 требует, чтобы вы создавали его как элемент управления ActiveX.

По этой причине я бы рекомендовал использовать библиотеку абстракций, такую ​​как jQuery. Если это не вариант, абстрагируйте создание до фабричного метода и проверьте версию браузера.

Чтобы использовать это для вызова веб-службы, вы просто создаете экземпляр объекта, а затем вызываете его метод open (). Я рекомендую сделать это асинхронно, чтобы пользовательский интерфейс оставался отзывчивым. При вызове async вы получите обратные вызовы для указанного асинхронного метода, который укажет статус запроса. Когда статус равен 4 (загружен), вы можете взять данные ответа и затем обработать их.

То, как вы обрабатываете данные, будет зависеть от того, что это такое. Если это JSON, вы можете запустить его с помощью метода eval () JavaScript, но это имеет некоторые последствия для безопасности. Если это XML, вы можете использовать XML DOM для его обработки.

См. Википедия для получения дополнительной информации об объекте XMLHttpRequest.

Просто любопытно. Был ли JavaScript способен вызывать веб-API / сервисы до того, как XHR был включен в язык, или до этого времени он предназначался для манипулирования DOM на страницах HTML как Только?

RBT 22.10.2017 07:02

Также проверьте XML HTTP-запрос на наличие хорошей информационной страницы об использовании объекта XmlHttpRequest.

Существует небольшая библиотека, написанная на javascript, которую можно использовать в качестве клиента XML-SOAP. Я не знаю, работает ли он во всех браузерах, но может вам помочь. Вы можете найти это здесь

Это сработало. Он старый (проверяется на Netscape), был написан до того, как вышли все инструменты Ajax. Вам действительно нужно работать с разными браузерами - в основном IE делает это одним способом, а все остальные - другим.

// javascript global variables
var soapHeader = '<?xml version=\"1.0\"?>'
               + '<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"'
               + ' SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"'
               + ' xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\"'
               + ' xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"'
               + '>'
               + '<SOAP-ENV:Header/>'
               + '<SOAP-ENV:Body>';

var soapFooter = '</SOAP-ENV:Body>'
               + '</SOAP-ENV:Envelope>';

var destinationURI = '/webservices/websalm';

var actionURI = '';

function callWebService(nsCallback,ieCallback,parms) {
  try
     {
       // Create XmlHttpRequest obj for current browser = Netscape or IE
       if (navigator.userAgent.indexOf('Netscape') != -1)
       {
          SOAPObject = new XMLHttpRequest();
          SOAPObject.onload = nsCallback;
       } else {  //IE
          SOAPObject = new ActiveXObject('Microsoft.XMLHTTP');
          SOAPObject.onreadystatechange = ieCallback;
       }

       SOAPObject.open('POST', destinationURI, true);

       // Set 2 Request headers, based on browser
       if (actionURI == '') {
          SOAPObject.setRequestHeader('SOAPAction', '\"\"');
       } else {  SOAPObject.setRequestHeader('SOAPAction', actionURI);
       }

       SOAPObject.setRequestHeader('Content-Type', 'text/xml');

       // Compose the Request body from input parameter + global variables
       var requestBody = soapHeader + parms + soapFooter

       // Send, based on browser
       if (navigator.userAgent.indexOf('Netscape') != -1)
       {
         SOAPObject.send(new DOMParser().parseFromString(requestBody,'text/xml'));
       } else {
         SOAPObject.send(requestBody);
       }
  } catch (E)
  {
     alert('callWebService exception: ' + E);
  }
}

Просто любопытно. Был ли JavaScript способен вызывать веб-API / сервисы до того, как XHR был включен в язык, или до этого времени он предназначался для манипулирования DOM на страницах HTML как Только?

RBT 22.10.2017 07:03

Другие вопросы по теме