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 閱讀(5222)
評論(3) 編輯 收藏