大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> XML专区 -> 使用XMLHTTP发送超长XML表单数据

使用XMLHTTP发送超长XML表单数据

时间: 2021-07-31 作者:daque

在把洪量的xml动作post数据的一局部发送给你的iis效劳器的功夫——诸如在asp表单的textarea里——你大概会获得少许没有预猜测的截止。当数据在效劳器上被处置的功夫,因为你处置数据办法的各别,你最后大概会碰到缺点。其因为是,当你把数据提交回效劳器的功夫,post字段里有一个(数据)巨细的控制。如许做的手段是为了提防大概的侵犯者在实行中断效劳(denial of service,dos)的报复中向效劳器发送超洪量的数据。

 这一控制也牵制你的本领。然而有方法处置这个题目。即使你没被控制在只不妨经过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 odomset 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, fldfor each fld in request.form("txtxml")    str = str & fldnext 因为仍旧为每个form元素都创造了一个字段集,以是你不妨在同一个称呼的字段里迭代。只有以符合的程序在存户端创造form元素,你就不须要担忧字段被遍历的程序。经过form的appendchild()本领,这不妨被简单地实行。

数据在存户端是依照从左到右、从上到下的程序被提交的,以是当你把input元素附加到form元素尾部的功夫,在你效劳端也老是依照同样的程序来接受数据的。

即使你正在寻务实现一个巨型的数据处置计划,比方将洪量的excel数据从存户呆板传播到效劳器上,那么你就该当从新商量能否要运用form提交,大概将数据从论理上分红多个小的局部。因为你没辙运用文献典型input元素,以是最具备创作力的处置计划是将数据在当地变化变成xml,再将xml数据提交给效劳器。反过来,数据会生存在效劳器上,直到须要更进一步处置。

固然,处置这个题目大概会有更好的本领。然而当你没有太多功夫的功夫,你所须要的即是一个赶快的、可用的处置计划。

 

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.