Как отправить данные на удаленный сервер с помощью Javascript

Мне нужно отправить данные на удаленный сервер с помощью javascript. Как это сделать?

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

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

ИЗМЕНИТЬ

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

Ответ 1

Один из самых распространенных способов сделать это - 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 или поддержка более крупных органов запроса, вы можете либо использовать промежуточную серверную сторону script в своем домене, либо вы можете отправить динамически созданную html-форму в iframe.

Ответ 2

  • отправьте форму с помощью POST. Это работает над всеми перекрестными доменами браузеров. Попросите сервер обработать сообщение. форма может быть отправлена ​​в скрытый фрейм, если вы хотите имитировать AJAX
  • Используйте Общий доступ к ресурсам домена (MDC) (IE XDR)
  • используйте веб-ошибку (создайте изображение, установите источник на нужный URL-адрес - только небольшие запросы GET)

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

  • используйте proxy, то есть обратитесь к своему серверу на другой сервер

Ответ 3

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

EDIT: вы можете настроить запрос AJAX для публикации на стороне сервера script (действующий как прокси-сервер) в своем собственном домене и чтобы этот script развернулся и опубликовал данные на ваш удаленный сервер.