【问题标题】:How do I post large data to the server?如何将大数据发布到服务器?
【发布时间】:2013-07-15 22:18:06
【问题描述】:

我必须将 XML 从客户端发送到服务器端。

我采用的方法是:

首先将xml转换为javascript中的字符串,然后作为uri发布

var url = '/perl/set_zorder_xml.cgi'+'?'+xmlString+'&'+location+'&'+'nocache='+randomnumber;

xml 字符串是包含字符串形式的 xml 的字符串。

post 函数如下所示:

if (window.XMLHttpRequest) {
            req_anno = new XMLHttpRequest();
            req_anno.open("POST", url, false);
            req_anno.send();
            }

问题是当我的 xml 字符串非常大时,会发生 html 414 错误,即 url 太大。 有什么办法,Javascript和perl都用了

【问题讨论】:

  • 您通常不会 send() XML,而不是将其添加到查询字符串中,这似乎是一件奇怪的事情,因为您正在使用 POST 请求发出 GET 请求。跨度>
  • 我是新来的,所以可能我弄得一团糟,你能详细说明一下可以遵循的程序吗,因为现在我的结构是这样的
  • 如果您使用jquery,您可以使用ajax 方法将请求作为真正的POST 请求启动。这基本上将内容与 url 一起发送。此内容对应于 url 参数及其值,不属于 url 长度限制。

标签: javascript string post xmlhttprequest


【解决方案1】:

即使您正在执行 POST 请求,您仍然会在 URL 的查询字符串中发送数据。相反,您应该移动要作为 POST 数据发送的数据,并将其从 URL 中删除。

req_anno.open("POST", '/perl/set_zorder_xml.cgi', false);
req_anno.send('xml=' + encodeURIComponent(xmlString));

XHR .send() 方法接受要发送的字符串作为请求正文(即 POST 数据)。

【讨论】:

  • 在服务器端xml的字符串值在哪里。我的意思是哪个参数以字符串格式保存xml的值
  • 在上面的代码中,数据将在名为 xml 的 POST 参数中。正如您在.send() 调用中看到的那样,我设置了xml=,您可以将其更改为您想要的任何参数名称。
  • 在服务器端:我的代码看起来像使用 CGI;使用 URI::Escape;需要'globalvariables.pl'; # 获取标准输入: $valStr=read(STDIN, $stdin, $ENV{'CONTENT_LENGTH'}); $paramVal=CGI::param(); print "Content-Type: text/html\r\n"; # header 告诉客户端你发送 XML print "\r\n";打印 $valStr; 但是如何打印 xml 的值。对不起基本的东西
  • 我得到了答案:使用 CGI;使用 URI::Escape;需要'globalvariables.pl'; # 获取标准输入: read(STDIN, $stdin, $ENV{'CONTENT_LENGTH'}); $paramVal=CGI::param(); print "Content-Type: text/html\r\n"; # header 告诉客户端你发送 XML print "\r\n"; #参数中包含查询字符串 $parameters=$ENV{'QUERY_STRING'};打印 $stdin;
  • 很高兴你成功了,我想你也可以使用use CGI;$q = new CGI;my $value = $q->param('xml');
猜你喜欢
  • 2019-03-31
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 2012-05-29
  • 1970-01-01
相关资源
最近更新 更多