13

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

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

如何做到这一点?

编辑

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

4

3 回答 3

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。

于 2011-02-19T08:11:18.727 回答
6
  • 使用 POST 提交表单。这适用于所有跨域浏览器。让服务器处理帖子。如果要模拟AJAX,可以将表单提交到隐藏框架
  • 使用跨域资源共享( MDC ) ( IE XDR )
  • 使用网络错误(创建图像,将源设置为您想要的 url - 仅限小型 GET 请求)

    var img = new Image();
    img.src="http://www.otherserver.com/getxml?xml="+encodeURIComponent(yourXML); (哎呀,我看到列别杰夫在他的更新中或多或少做了同样的事情)

  • 使用代理,即让您的服务器为您与另一台服务器通信

于 2011-02-19T09:43:27.410 回答
0

查看 Javascript 的 XMLHTTPRequest 方法——或者从 Google 搜索 AJAX 开始。有很多方法可以做到这一点——包括通过 jQuery 等 JS 库的一些非常简单的方法——但更具体的答案需要对您正在使用的特定技术进行更详细的说明。

编辑:您可以设置 AJAX 请求以发布到您自己域上的服务器端脚本(充当代理),并让该脚本转过来并将数据发布到您的远程服务器。

于 2011-02-19T08:05:57.273 回答