这一限定也约束你的才能。然则有要领处理这个题目。假如你没被限定在只能够经由过程FORM提交来发送数据,那末你就能够运用xmlhttp对象(微软的XML集里的一个DOM对象)来发送所须要的XML:
var oXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP"); oXMLHTTP.open("POST", "xml_handler.asp", false); oXMLHTTP.send(xml_to_send);
因为Request对象会完成IStream接口,所以你能够经由过程运用DOMDocument对象的load()要领来加载所要提交的XML:
Dim oDOM Set oDOM = Server.CreateObject("MSXML2.DOMDocument") oDOM.load Request
假如你被限定在只能够运用FORM提交,那末你能够经由过程提交多个TEXTAREA或许INPUT来逾越这一限定,前面二者在服务器一吸收到这个FORM数据的时刻就能够被重新组合在一起:
var MAXLEN = 90000; var oForm = document.createElement("FORM"); oFORM.method = "POST"; oFORM.action = "xml_handler.asp"; oFORM = document.body.appendChild(oFORM); var s = document.someForm.txtXML.value; if (s.length > MAXLEN) { while (s.length > MAXLEN) { var o = document.createElement("INPUT"); o.type = "hidden"; o.name = "txtXML"; o.value = s.substr(0, MAXLEN); oFORM.appendChild(o); s = s.substr(MAXLEN); } var o = document.createElement("INPUT"); o.type = "hidden"; o.name = "txtXML"; o.value = s.substr(0, MAXLEN); oFORM.appendChild(o); } else { var o = document.createElement("INPUT"); o.type = "hidden"; o.name = "txtXML"; o.value = s; oFORM.appendChild(o); }
这一段代码会建立一个新的FORM元素,用来处置惩罚数据的提交,并将它安排到BODY元素内。然后,它会搜检行将提交给服务器的XML的长度。这个XML驻留在someForm内部一个叫做txtXML的TEXTAREA里。
假如这个XML大于90,000字符的MAXLEN,那末这段代码就会建立多个隐蔽的INPUT(输入)元素,并把值的属性设置为90,000个字符的XML数据,或许设置为XML尾部的某个值,从而将这个数据分割成多个部份。假如这个XML的大小小于MAXLEN,那末这段代码就只会建立一个INPUT并响应地设置值。然后这个数据就被提交到服务器供处置惩罚。
你能够已注意到,我把雷同的称号——txtXML——指定给新表单的每一个字段。这将有助于把XML数据同其他能够会被提交的数据分开开来,并为重组XML数据供应了一种简朴的体式格局。在重组数据的时刻,你须要一个简朴的轮回来衔接字段里的数据:
Dim str, fld For Each fld In Request.Form("txtXML") str = str & fld Next
因为已为每一个FORM元素都建立了一个字段集,所以你能够在同一个称号的字段里迭代。只要以恰当的递次在客户端建立FORM元素,你就不须要忧郁字段被遍历的递次。经由过程FORM的appendChild()要领,这能够被轻易地完成。
数据在客户端是根据从左到右、从上到下的递次被提交的,所以当你把INPUT元素附加到FORM元素尾部的时刻,在你服务端也老是根据一样的递次来吸收数据的。
假如你正在追求完成一个大型的数据处理方案,比方将大批的Excel数据从客户机械通报到服务器上,那末你就应该重新考虑是不是要运用FORM提交,或许将数据从逻辑上分红多个小的部份。因为你没法运用文件范例INPUT元素,所以最具有创造力的处理方案是将数据在当地改变成为XML,再将XML数据提交给服务器。反过来,数据会保存在服务器上,直到须要更进一步处置惩罚。
固然,处置惩罚这个题目能够会有更好的要领。然则当你没有太多时候的时刻,你所须要的就是一个疾速的、可用的处理方案。
以上就是细致引见运用XMLHTTP发送超长XML表单数据的详解的内容,更多相关内容请关注ki4网(www.ki4.cn)!