如何使用Javascript将数据发送到远程服务器

时间:2011-02-19 08:03:12

标签: javascript remote-server

我需要使用javascript将数据发送到远程服务器。我该怎么做?

背景信息 有一个网页,我使用JS从中提取一些信息,我需要将它发送回另一台服务器进行处理。回应不是必要的。数据是XML,我已对其进行URL编码。

如何做到这一点?

修改

我请求数据的服务器与接收数据的服务器不同。只是为了澄清。

3 个答案:

答案 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)

  • 使用POST提交表单。这适用于跨域的所有浏览器。让服务器处理帖子。如果要模拟AJAX,可以将表单提交到隐藏框架
  • 使用Cross Domain Resource SharingMDC)(IE XDR
  • 使用网络错误(创建图片,将源设置为您想要的网址 - 仅限小型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请求设置为在您自己的域上发布到服务器端脚本(充当代理),并让该脚本转向并将数据发布到您的远程服务器。