利用XMLHTTP实现ASP.NET无刷新提交

 

在一些页面处理中,如果需要多次进行后台提交处理的话,就会不停的刷新页面,很烦人,特别是机器配置不好或者网络状况不好的情况下,更加显得让人难受。

这种情况下我们可以利用XMLHTTP来实现不刷新的提交,这在做asp的时候就有不少这样的应用,在asp.net里使用也是一样的。

首先,新建一个页面,命名Send.aspx, 用来做需要提交的页面,另一个页面do.aspx, 用来做处理提交的页面。

写一个js的提交方法,代码如下:

function SendData()
{
      var s = "xml格式";
      var url = "DoFilm.aspx?type=ADD"+"&aFilmBag_PKID="+aFilmBag_PKID;
      var xml = new ActiveXObject("Microsoft.XMLDOM");
      xml.async=false;
      xml.loadXML(s);
      var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      xmlhttp.open("post",url,false);
      xmlhttp.send(xml);

}



这个js方法非常简单,定义一个XMLHTTP对象,然后就调用open方法和send方法,就可以了.

再在页面中用一个button来调用该方法,发送到do.aspx。

在处理的页面do.aspx,在对应的cs文件do.aspx.cs中,这样来接收发送过去的数据:


int id = 0;
if(Request.Params["ID"!= null)
{
    
//接收从url中传递过来的参数
    id = int.Parse(Request.Params["ID"]);
}

 XmlDocument XmlDOC = new XmlDocument();
 XmlDOC.Load(Request.InputStream); 
 string str = XmlDOC.InnerXml;

//接收从xh.send()方法中传递过来的数据
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);
//这里可以根据传递过来的参数和数据进行各种处理
//
//返回给发送页面的数据,通过Response.Write()来传递
//这里将发送过来的参数和数据返回
Response.Write(id + System.Text.Encoding.Default.GetString(b));
整个过程就这样OK了。

注意,在do.aspx文件的html代码页面中,如果存在任何的前台代码,都会作为send()请求的返回内容,一并返回到xh.responseText中。

另外,可以用html页面来替代上面的Send.aspx,按照相同的方法,来实现静态页面的数据提交。



posted on 2009-05-29 14:11 RedLight 阅读(292) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

公告


Name: Galen
QQ: 88104725

常用链接

留言簿(3)

随笔分类

随笔档案

相册

My Friend

搜索

最新评论

阅读排行榜

评论排行榜