在一些頁面處理中,如果需要多次進(jìn)行后臺(tái)提交處理的話,就會(huì)不停的刷新頁面,很煩人,特別是機(jī)器配置不好或者網(wǎng)絡(luò)狀況不好的情況下,更加顯得讓人難受。
這種情況下我們可以利用XMLHTTP來實(shí)現(xiàn)不刷新的提交,這在做asp的時(shí)候就有不少這樣的應(yīng)用,在asp.net里使用也是一樣的。
首先,新建一個(gè)頁面,命名Send.aspx, 用來做需要提交的頁面,另一個(gè)頁面do.aspx, 用來做處理提交的頁面。
在Send.aspx頁面中,有一個(gè)input輸入框,作為我們需要提交到后臺(tái)的數(shù)據(jù),
<input id="txtUser" type="text" runat="server">
另外寫一個(gè)js的提交方法,代碼如下:
function SendData(){
var xh = new ActiveXObject("MSXML2.XMLHTTP");??
xh.open("POST","do.aspx?ID=1",false);
xh.send(document.all.txtUser.value);
alert(xh.responseText);//打印XMLHTTP的返回?cái)?shù)據(jù)}這個(gè)js方法非常簡單,定義一個(gè)XMLHTTP對(duì)象,然后就調(diào)用open方法和send方法,就可以了.
再在頁面中用一個(gè)button來調(diào)用該方法,發(fā)送到do.aspx。
在處理的頁面do.aspx,在對(duì)應(yīng)的cs文件do.aspx.cs中,這樣來接收發(fā)送過去的數(shù)據(jù):
int id = 0;
if(Request.Params["ID"] != null)
{???
//接收從url中傳遞過來的參數(shù)???
id = int.Parse(Request.Params["ID"]);}
//接收從xh.send()方法中傳遞過來的數(shù)據(jù)
System.IO.Stream stream = Request.InputStream;
System.IO.BinaryReader br = new System.IO.BinaryReader(stream, System.Text.Encoding.Default);
int len = int.Parse(stream.Length.ToString());
byte[] b = br.ReadBytes(len);
//這里可以根據(jù)傳遞過來的參數(shù)和數(shù)據(jù)進(jìn)行各種處理
////返回給發(fā)送頁面的數(shù)據(jù),通過Response.Write()來傳遞
//這里將發(fā)送過來的參數(shù)和數(shù)據(jù)返回
Response.Write(id + System.Text.Encoding.Default.GetString(b));
整個(gè)過程就這樣OK了。
注意,在do.aspx文件的html代碼頁面中,如果存在任何的前臺(tái)代碼,都會(huì)作為send()請(qǐng)求的返回內(nèi)容,一并返回到xh.responseText中。
另外,可以用html頁面來替代上面的Send.aspx,按照相同的方法,來實(shí)現(xiàn)靜態(tài)頁面的數(shù)據(jù)提交。
?