Как отправить данные на удаленный сервер с помощью 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 развернулся и опубликовал данные на ваш удаленный сервер.