XMLHTTP 传参

在ASP.NET应用程序中,我们经常需要在页面间传递参数,经常使用的方法有如下几种:
1、用receive.aspx?id=5&code=3的形式将参数传到接收页面,然后在接收页面用Request.QueryString()方法得到参数值,这种最简单,但是有长度不能超过256K的限制
2、使用隐藏域<input name="code" type="hidden" >,将要需要传送的参数值赋给该隐藏域的Value,然后将该页面用Server.Transfer方法重定向到接收页面,在接收页面用Request.Form["code"]方法得到参数值,该方法可以图片256K的限制,但页面需重定向,隐藏域的值不是很安全。
3、使用Session,Application在页面间传参数,这样传递比较安全,但微软提供这些对象初衷不是用来传递页面参数的。
4、我自己的一种方法,具体思路,先将需要传递的参数组织成键值对存放在XML文件中,在用XMLHTTP将该文件发送到接收页面,在接收页面中解析该xml文件得到参数,这种方法不光光可以可以传递普通参数,还可以将对象系列化成XML文件后传到接收页面,而且整个过程可以做到发送页面不刷新,可以传送大对象,并且可以将传递的参数在接收页面进行处理,再将处理结果返回到发送页面,下面描述一下具体的实现过程:

我需要传送的XML文件如下:
ContractedBlock.gif ExpandedBlockStart.gif 包含键值对的XML文件
1None.gif<?xml version="1.0"?>
2None.gif<root>
3None.gif  <param key="0" value="value0" />
4None.gif  <param key="1" value="value1" />
5None.gif  <param key="2" value="value2" />
6None.gif  <param key="3" value="value3" />
7None.gif  <param key="4" value="value4" />
8None.gif</root>
在发送页面组合该XML文件的代码如下:
ContractedBlock.gif ExpandedBlockStart.gif 组织参数
 1None.gifvar xmlhttp=null
 2None.gifif (window.XMLHttpRequest) 
 3ExpandedBlockStart.gifContractedBlock.gifdot.gif
 4InBlock.gif    xmlhttp = new XMLHttpRequest(); 
 5ExpandedBlockEnd.gif}
 
 6None.gifif (!xmlhttp&&window.ActiveXObject) 
 7ExpandedBlockStart.gifContractedBlock.gifdot.gif{     
 8InBlock.gif    try 
 9ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif
10InBlock.gif    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.5.0"
11ExpandedSubBlockEnd.gif    }
 
12InBlock.gif    catch(e) 
13ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif
14InBlock.gif        try 
15ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
16InBlock.gif        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0"
17ExpandedSubBlockEnd.gif        }
 
18InBlock.gif        catch(e) 
19ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
20InBlock.gif            try 
21ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif
22InBlock.gif            new ActiveXObject("Msxml2.XMLHTTP"
23ExpandedSubBlockEnd.gif            }
 
24InBlock.gif            catch(e) 
25ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif
26ExpandedSubBlockStart.gifContractedSubBlock.gif            trydot.gif{new ActiveXObject("Microsoft.XMLHTTP")}
27InBlock.gif            catch(e)
28ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{} 
29ExpandedSubBlockEnd.gif            }
 
30ExpandedSubBlockEnd.gif        }
 
31ExpandedSubBlockEnd.gif    }
 
32ExpandedBlockEnd.gif}
 
33None.giffunction sendParameter()
34ExpandedBlockStart.gifContractedBlock.gifdot.gif{
35InBlock.gif    var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
36InBlock.gif    xmldoc.loadXML('<?xml version="1.0"?><root/>');
37InBlock.gif        for(var i=0;i<5;i++)
38ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
39InBlock.gif        var node = xmldoc.createNode(1,"param","");
40InBlock.gif        var attribID = xmldoc.createAttribute("key");
41InBlock.gif        attribID.value = i;
42InBlock.gif        node.setAttributeNode(attribID);
43InBlock.gif        var attribIDCode = xmldoc.createAttribute("value");
44InBlock.gif        attribIDCode.value = "value" + i;
45InBlock.gif        node.setAttributeNode(attribIDCode);
46InBlock.gif        xmldoc.documentElement.appendChild(node);
47ExpandedSubBlockEnd.gif    }

48InBlock.gif    
49InBlock.gif    xmlhttp.open("POST","upload.aspx",true);
50InBlock.gif    xmlhttp.onreadystatechange = rep
51InBlock.gif    xmlhttp.send(xmldoc);
52ExpandedBlockEnd.gif}

在接收页读取并解析XML文件
ContractedBlock.gif ExpandedBlockStart.gif 读取解析XML文件
 1None.gifprotected void Page_Load(object sender, EventArgs e)
 2ExpandedBlockStart.gifContractedBlock.gif    dot.gif{
 3InBlock.gif        if (!IsPostBack)
 4ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 5InBlock.gif            XmlDocument xmlDoc = new XmlDocument();
 6InBlock.gif            xmlDoc.Load(Request.InputStream);
 7InBlock.gif            XmlElement xmlElement = xmlDoc.DocumentElement;
 8InBlock.gif
 9InBlock.gif            for (int i = 0; i < xmlElement.ChildNodes.Count; i++)
10ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
11ExpandedSubBlockEnd.gif            }

12ExpandedSubBlockEnd.gif        }

13ExpandedBlockEnd.gif    }

转载于:https://www.cnblogs.com/kagar/archive/2007/03/08/668012.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值