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

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

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

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

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

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

3 ответов


один из наиболее распространенных способов сделать это-AJAX. Вот как вы выполняете запрос AJAX post с помощью 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.


  • отправить форму с помощью POST. То есть работает на всех браузерах кросс-доменов. Попросите сервер обработать сообщение. форма может быть отправлена в скрытый фрейм, если вы хотите имитировать AJAX
  • использовать Домен Крест Ресурсов (MDC) (Т. Е. ШЛУ)
  • используйте веб-ошибку (создайте изображение, установите источник на нужный url - адрес-smallish GET requests only)

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

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


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

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