这个标题不知道怎么取才好,其实要实现的功能就是在客户端要将大量的数据传递到服务端,我们知道url的长度是有限制的,如果使用url的参数来传递数据,只能传递很少的关键信息,但有时候我们要传递大量的信息,比如一张单据中的所有商品的商品编号等等.
Ajax技术中的xmlhttp.send()方法提供我们传送大量数据的功能,要使用该功能,首先要将要传到服务端的数据封装在一个xml对象中,在将这个xml对象的xml属性做为send()方法的参数就可以.
客户端代码:
var
guidArray
=
guidlist.split(
"
,
"
);
var xmlDom = new ActiveXObject( " MSXML2.DOMDocument " );
xmlDom.loadXML( "" );
var domRoot = xmlDom.createElement( " NewDataSet " );
xmlDom.appendChild(domRoot);
for ( var i = 0 ;i < guidArray.length;i ++ )
{
var node = xmlDom.createElement( " guid " );
node.text = guidArray[i];
domRoot.appendChild(node);
}
var xmlhttp = new ActiveXObject( " MSXML2.XMLHTTP " );
xmlhttp.onreadystatechange = function (){
if (xmlhttp.readyState == 4 )
{
if (xmlhttp.status == 200 )
{
alert( " 处理完成 " );
}
else
{
alert(xmlhttp.responseText);
}
}
}
xmlhttp.Open( " POST " , " fmSmsPostProcess.aspx?sStatus= " + escape(sStatus) + " &sProcessResult= " + escape(document.getElementById( " btProcessResult " ).value) +
" &sReStore= " + escape(document.getElementById( " btReStore " ).value), true );
xmlhttp.setRequestHeader( " Content-Type " , " text/xml " );
xmlhttp.send(xmlDom.xml);
服务端需要从请求流中,解析出客户端传入的xml的内容,服务端代码:
var xmlDom = new ActiveXObject( " MSXML2.DOMDocument " );
xmlDom.loadXML( "" );
var domRoot = xmlDom.createElement( " NewDataSet " );
xmlDom.appendChild(domRoot);
for ( var i = 0 ;i < guidArray.length;i ++ )
{
var node = xmlDom.createElement( " guid " );
node.text = guidArray[i];
domRoot.appendChild(node);
}
var xmlhttp = new ActiveXObject( " MSXML2.XMLHTTP " );
xmlhttp.onreadystatechange = function (){
if (xmlhttp.readyState == 4 )
{
if (xmlhttp.status == 200 )
{
alert( " 处理完成 " );
}
else
{
alert(xmlhttp.responseText);
}
}
}
xmlhttp.Open( " POST " , " fmSmsPostProcess.aspx?sStatus= " + escape(sStatus) + " &sProcessResult= " + escape(document.getElementById( " btProcessResult " ).value) +
" &sReStore= " + escape(document.getElementById( " btReStore " ).value), true );
xmlhttp.setRequestHeader( " Content-Type " , " text/xml " );
xmlhttp.send(xmlDom.xml);
System.IO.Stream instream
=
Page.Request.InputStream;
BinaryReader br = new BinaryReader(instream,System.Text.Encoding.UTF8);
byte [] byt = br.ReadBytes(( int )instream.Length);
string sXml = System.Text.Encoding.UTF8.GetString(byt);
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.LoadXml(sXml);
XmlElement xe = xmlDoc.DocumentElement;
for ( int i = 0 ;i < xe.ChildNodes.Count;i ++ )
{
sGuid = sGuid + " ,' " + xe.ChildNodes[i].InnerText + " ' " ;
}
BinaryReader br = new BinaryReader(instream,System.Text.Encoding.UTF8);
byte [] byt = br.ReadBytes(( int )instream.Length);
string sXml = System.Text.Encoding.UTF8.GetString(byt);
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.LoadXml(sXml);
XmlElement xe = xmlDoc.DocumentElement;
for ( int i = 0 ;i < xe.ChildNodes.Count;i ++ )
{
sGuid = sGuid + " ,' " + xe.ChildNodes[i].InnerText + " ' " ;
}