вызов веб-сервиса из javascript и ожидание ответа - PullRequest
1 голос
/ 22 ноября 2011

Я создал веб-сервис и хочу вызвать его из javascript, для этого я зарегистрировал ServiceReference в диспетчере скриптов моей страницы и вызвал веб-сервис с использованием пространства имен.

Моя проблема в том, что я хочу дождаться ответа от веб-службы.

Для этого я пытался использовать setInterval, но это не работает.

Есть ли другой способ добиться этого?

Более подробная информация ниже: В Javascript Если вы пишете функцию для вызова WebService, вы должны передать ей сигнатуру метода, которая будет вызвана после того, как webservice отправит ответ.

, например

var IsResponseReceived;
function GetSomethingFromWebService()
{
  IsResponseReceived = 'No';
  Namespace.WebServiceClass.GetMeSomething(parameter1,SuccessResponseReceiver);
  alert(webServiceResponse);
}

function SuccessResponseReceiver(parameter1,parameter2)
{
  IsResponseReceived = 'Yes';
}

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

Теперь я свободен?

Ответы [ 3 ]

4 голосов
/ 22 ноября 2011

Если вы планируете использовать чистый JavaScript (довольно необычно в наши дни), рассмотрите этот код

var strURL = "localhost/services/foobar.svc";
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
    self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('GET', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
    if (self.xmlHttpReq.readyState == 4) {
        // do whatever you want to do when your service responded
        // you may get the response content using self.xmlHttpReq.responseText
    }
}
self.xmlHttpReq.send();

Если вы подумаете об использовании jQuery (это одна из самых популярных сред JavaScript),это просто:

$.ajax({
  url: "localhost/services/foobar.svc",
  success: function(data){
    // this is fired on successful response
    // you will have response content in data parameter
  }
});
0 голосов
/ 22 ноября 2011

Если вы хотите вызвать сервис синхронно, то вы можете также вызвать веб-сервис из кода. По умолчанию основной поток будет ждать, пока вы не получите ответ от службы.

0 голосов
/ 22 ноября 2011

Используйте XmlHttpRequest (Ajax) и обработайте ответ в функции обратного вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...