我需要使用javascript将数据发送到远程服务器。我该怎么做?
背景信息 有一个网页,我使用JS从中提取一些信息,我需要将它发送回另一台服务器进行处理。回应不是必要的。数据是XML,我已对其进行URL编码。
如何做到这一点?
修改
我请求数据的服务器与接收数据的服务器不同。只是为了澄清。
答案 0 :(得分:20)
最常见的方法之一是AJAX。以下是使用jQuery执行AJAX发布请求的方法:
<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请求(在Internet Explorer中不能超过2KB)。如果您绝对需要POST请求或支持更大的请求主体,您可以在域上使用中间服务器端脚本,也可以将动态创建的html表单发布到iframe。
答案 1 :(得分:6)
使用网络错误(创建图片,将源设置为您想要的网址 - 仅限小型GET请求)
var img = new Image();
img.src="http://www.otherserver.com/getxml?xml="+encodeURIComponent(yourXML);
(糟糕,我看到Lebedev在他的更新中或多或少地做了同样的事情)
使用proxy,即让您的服务器与其他服务器对话
答案 2 :(得分:0)
查看Javascript的XMLHTTPRequest方法 - 或者从Google搜索AJAX开始。有很多方法可以做到这一点 - 包括通过jQuery这样的JS库的一些非常简单的方法 - 但是更具体的答案需要更多关于你正在使用的特定技术的细节。
编辑:您可以将AJAX请求设置为在您自己的域上发布到服务器端脚本(充当代理),并让该脚本转向并将数据发布到您的远程服务器。