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

Jan*_*eks 12 javascript remote-server

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

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

怎么会这样做?

编辑

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

Ale*_*dev 20

最常见的方法之一是AJAX.以下是使用jQuery执行AJAX post请求的方法:

<script type="text/javascript">
  $.post('/remote-url', {xml: yourXMLString });
</script>
Run Code Online (Sandbox Code Playgroud)

在服务器端,您可以像处理任何其他POST请求一样处理它.如果您正在使用PHP,那就是$xml = $_POST['xml'];

AJAX的最大限制是,您只能向已加载文档的同一域发出请求(也称为跨域策略).有多种方法可以克服这种限制,其中最简单的一种是JSONP.


UPD.对于跨域请求,一个非常简单(但不是通用)的解决方案是:

(new Image).src = 'http://example.com/save-xml?xml=' + escape(yourXMLString)
Run Code Online (Sandbox Code Playgroud)

这将发出GET请求(在Internet Explorer中不能超过2KB).如果您绝对需要POST请求或支持更大的请求主体,您可以在域上使用中间服务器端脚本,也可以将动态创建的html表单发布到iframe.

  • 请再次阅读该问题.我明确指出,它是一个远程服务器,这意味着它与加载页面的方式不同. (4认同)
  • @Janis请熟悉远程服务器是什么.远程服务器是一种"计算机,它不附加到用户的键盘上,但无论是在同一房间,建筑物的另一部分,还是世界的其他地方,他或她都有一定程度的控制权.也称为远程服务器.电脑或远程主机".顺便说一下,我在答案中提到了跨域请求. (3认同)

mpl*_*jan 6

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

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

  • 使用代理,即让您的服务器与您的其他服务器通信