Posted on 2006-03-27 15:33
DoNet鸟 阅读(448)
评论(0) 编辑 收藏引用收藏至365Key 所属分类:
DoNet技术
这个标题不知道怎么取才好,其实要实现的功能就是在客户端要将大量的数据传递到服务端,我们知道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的内容,服务端代码:
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+"'";
}
posted on 2006-08-08 18:12
happytian 阅读(5219)
评论(3) 编辑 收藏