Использование Web-сервисов непосредственно AJAX - PullRequest
3 голосов
/ 17 февраля 2011

В настоящее время я разрабатываю веб-сайт для системы общественного транспорта на основе API Trafikanten (http://reis.trafikanten.no/topp2009/topp2009ws.asmx)

Сайт имеет несколько функциональных возможностей, хотя и является веб-сервисом. Это реализовано в .NET Framework с форматом SOAP. Но нам нужно использовать его функциональные возможности на клиентском языке, таком как JavaScript, чтобы иметь возможность отображать информацию на веб-странице. Кто-нибудь может предложить какой-нибудь простой способ справиться с этим сценарием?

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

При условии, что вы используете стек LAMP:

Я написал бы сценарий PHP, используя библиотеку nusoap (http://sourceforge.net/projects/nusoap/)) для использования веб-службы SOAP и возврата JSON в ваш JavaScript через вызов AJAX.

Редактировать

Это еще проще в .NET. Просто щелкните правой кнопкой мыши на своем проекте и выберите Добавить веб-службу. Затем вы можете получить доступ к методам веб-службы так же, как вылюбой другой объект. Что касается его использования в JS, вы можете реализовать создание страницы ASP, которая выводит результаты в формате JSON, а затем использовать ее, используя jQuery, как при использовании стека LAMP. Хотя, с возможностями обратной отправки ASPвозможно, вам лучше позволить ему выполнить тяжелую работу в JS и использовать веб-службы непосредственно в файле кода за вашим представлением.

Надеюсь, это поможет.

1 голос
/ 17 февраля 2011

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

Если вы добавили сервисную ссылку на Top2009WS в свой проект ASP.NET, что-то вроде этого может действовать как серверный прокси для GetLines (), например:

[WebMethod]
public Line[] GetLines(int ID) {
  var client = new Topp2009WS.Topp2009WSSoapClient();

  client.open();

  return client.GetLines(ID);
}

Затем вы можете звонить через прокси-сервер на стороне клиента:

$.ajax({
  url: 'Service.asmx/GetLines',
  type: 'POST',
  dataType: 'json',
  contentType: 'application/json',
  data: '{"ID":' + 12345 + '}',
  success: function(response) {
    // Alerts the first result's "LineName"
    alert(response.d[0].LineName);
  }
});

См. Этот пост для получения дополнительной информации о использовании jQuery для вызова веб-службы .

0 голосов
/ 17 февраля 2011

Я делал это в прошлом, как говорит Джесси, но с .NET. Я создаю «составную службу» или службу адаптера, которая затем вызывает другие службы. Составная служба будет связывать SOAP со службами .NET, а ваше приложение будет связывать JSON с вашей составной службой.

...