利用XMLHTTP发送超长的XML格式的数据
这个限制也束缚你的能力。但是有一个方法来解决这个问题。如果你不局限于只通过形式发送数据,你可以使用XMLHTTP对象(在XML DOM对象)发送所需的XML。
无功oxmlhttp =新的ActiveX对象(微软。XMLHTTP );
OXMLHTTP.open(后
OXMLHTTP.send(xml_to_send);
因为请求对象实现IStream接口,可以加载XML,您想通过负载()提交的DOMDocument对象的方法。
昏暗的奥多姆
把奥多姆= server.createobject(MSXML2. DOMDocument )
odom.load请求
如果你被限制只能使用表单提交,你可以跨越这个限制提交多个文本或输入。前两个可以集结在一起时,他们收到的表格数据。
无功maxlen = 90000;
无功oform = document.createelement(形式);
oform.method = 后;
oform.action =xml_handler .asp;
oform = document.body.appendchild(oform);
var = document.someform.txtxml.value;
如果(s.length > maxlen){
而(s.length > maxlen){
var o = document.createelement(输入);
o.type =隐藏;
o.name =txtxml ;
o.value = s.substr(0,maxlen);
oform.appendchild(O);
S = s.substr(maxlen);
}
var o = document.createelement(输入);
o.type =隐藏;
o.name =txtxml ;
o.value = s.substr(0,maxlen);
oform.appendchild(O);
{人}
var o = document.createelement(输入);
o.type =隐藏;
o.name =txtxml ;
o.value = S;
oform.appendchild(O);
}
这段代码创建了一个新的表单元素,处理数据的提交和把它变成身体的元素。然后,它检查XML,需要提交的长度。这个XML驻留在一个文本内部形式称为txtxml。
如果XML是maxlen大于90000个字符,所以此代码将创建多个隐藏的input(输入)为90000个字符的XML元素和属性的设置,或设置一个值的XML的结束,因此,数据分为多个部分,如果XML的大小小于maxlen,代码将只创建一个输入和设置相应的值。数据并进行处理。
你可能已经注意到我指定相同的名称,txtxml,以新形式的各个领域,这将有助于XML数据从其他可能的数据,可以提交单独的,和重组XML数据提供了一种简单的方法,当重组数据,你需要一个简单的回路连接字段中的数据:
昏暗的STR,FLD
在要求每个FLD。形式(txtxml )
STR = STR FLD
下一个
既然你已经创建了一个字段设置为每个表单元素,您可以重复相同的名字的领域。只要你创造适当的顺序在客户端的表单元素,你不必担心的领域被遍历的顺序。这可以很容易地通过appendChild实现()方法的形式。
从左到右,从上到下,在客户端提交数据,所以当您在表单元素尾部添加输入元素时,您总是在服务器上以相同的顺序接收数据。
如果你正在寻求实施大数据解决方案,如发送大量的数据从客户端机器上,那么你应该重新考虑你是否需要使用表单提交,或在逻辑上把数据分成更小的部分,因为你不能使用文件输入元素,最有创意的解决方案是将本地数据转换成XML,然后提交XML数据,将数据保存到需要进一步处理。
当然,也许有一个更好的方法来处理这个问题,但是当你没有很多时间的时候,你需要的是一个快速,可用的解决方案。