Как отправить данные на удаленный сервер с помощью Javascript - PullRequest
12 голосов
/ 19 февраля 2011

Мне нужно отправить данные на удаленный сервер, используя JavaScript. Как мне это сделать?

Справочная информация: Есть веб-страница, с которой я извлекаю некоторую информацию, используя JS, и мне нужно отправить ее обратно на другой сервер для обработки. Ответ не является обязательным. Данные представляют собой XML, который я URLencode'd.

Как можно это сделать?

EDIT

Сервер, с которого я запрашиваю данные, не тот, который получает данные. Просто чтобы уточнить.

Ответы [ 3 ]

20 голосов
/ 19 февраля 2011

Один из самых распространенных способов сделать это - AJAX.Вот как вы выполняете пост-запрос AJAX с помощью jQuery:

<script type="text/javascript">
  $.post('/remote-url', {xml: yourXMLString });
</script>

На стороне сервера вы обрабатываете его, как и любой другой запрос POST.Если вы используете PHP, это $xml = $_POST['xml'];

Самое большое ограничение AJAX - это то, что вам разрешено делать запросы только в тот домен, из которого был загружен документ (так называемая междоменная политика).Существуют различные способы преодоления этого ограничения, одним из самых простых является JSONP .


UPD. Для междоменных запросов чрезвычайно просто (хотяне универсальное) решение будет следующим:

(new Image).src = 'http://example.com/save-xml?xml=' + escape(yourXMLString)

Это выдаст запрос GET (который не может превышать 2 КБ в Internet Explorer).Если вам абсолютно необходим запрос POST или поддержка больших тел запросов, вы можете использовать промежуточный серверный скрипт в своем домене или опубликовать динамически созданную HTML-форму в iframe.

6 голосов
/ 19 февраля 2011
  • отправить форму, используя POST.Это работает на всех браузерах кросс-доменов.Пусть сервер обработает сообщение.форму можно отправить в скрытый фрейм, если вы хотите смоделировать AJAX
  • Использовать Междоменное распределение ресурсов ( MDC ) ( IE XDR )
  • использовать веб-баг (создайте изображение, укажите исходный URL-адрес, который вам нужен - только небольшие запросы GET)

    var img = new Image();
    img.src="http://www.otherserver.com/getxml?xml="+encodeURIComponent(yourXML); (Ой)Я вижу, что Лебедев сделал более или менее то же самое в своем обновлении)

  • использовать прокси , т.е. ваш сервер общается с другим сервером за вас

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

Посмотрите на метод Javascript XMLHTTPRequest или начните с поиска в Google для AJAX.Есть много способов сделать это - в том числе несколько очень простых способов использования JS-библиотек, таких как jQuery, - но более конкретный ответ потребует дополнительных подробностей о конкретных технологиях, которые вы используете.

РЕДАКТИРОВАТЬ: Вы можете настроить запрос AJAX для отправки на серверный сценарий (действующий в качестве прокси-сервера) в своем собственном домене, чтобы этот сценарий развернулся и отправил данные на удаленный сервер.

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