zoukankan      html  css  js  c++  java
  • 使用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文件如下:

    1<?xml version="1.0"?>
    2<root>
    3  <param key="0" value="value0" />
    4  <param key="1" value="value1" />
    5  <param key="2" value="value2" />
    6  <param key="3" value="value3" />
    7  <param key="4" value="value4" />
    8</root>
    在发送页面组合该XML文件的代码如下:

     1var xmlhttp=null
     2if (window.XMLHttpRequest) 
     3
     4    xmlhttp = new XMLHttpRequest(); 
     5}
     
     6if (!xmlhttp&&window.ActiveXObject) 
     7{     
     8    try 
     9    
    10    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.5.0"
    11    }
     
    12    catch(e) 
    13    
    14        try 
    15        
    16        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0"
    17        }
     
    18        catch(e) 
    19        
    20            try 
    21            
    22            new ActiveXObject("Msxml2.XMLHTTP"
    23            }
     
    24            catch(e) 
    25            
    26            try{new ActiveXObject("Microsoft.XMLHTTP")}
    27            catch(e)
    28            {} 
    29            }
     
    30        }
     
    31    }
     
    32}
     
    33function sendParameter()
    34{
    35    var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
    36    xmldoc.loadXML('<?xml version="1.0"?><root/>');
    37        for(var i=0;i<5;i++)
    38    {
    39        var node = xmldoc.createNode(1,"param","");
    40        var attribID = xmldoc.createAttribute("key");
    41        attribID.value = i;
    42        node.setAttributeNode(attribID);
    43        var attribIDCode = xmldoc.createAttribute("value");
    44        attribIDCode.value = "value" + i;
    45        node.setAttributeNode(attribIDCode);
    46        xmldoc.documentElement.appendChild(node);
    47    }

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

    在接收页读取并解析XML文件

     1protected void Page_Load(object sender, EventArgs e)
     2    {
     3        if (!IsPostBack)
     4        {
     5            XmlDocument xmlDoc = new XmlDocument();
     6            xmlDoc.Load(Request.InputStream);
     7            XmlElement xmlElement = xmlDoc.DocumentElement;
     8
     9            for (int i = 0; i < xmlElement.ChildNodes.Count; i++)
    10            {
    11            }

    12        }

    13    }
    参数传递完毕,大家发表一下意见吧!!
  • 相关阅读:
    Understanding String Table Size in HotSpot
    Java性能优化之JVM GC(垃圾回收机制)
    为什么新生代内存需要有两个Survivor区
    jmap命令详解
    JVM GC 机制与性能优化
    JVM1.6 GC详解
    jstat命令详解
    锁的性能相关
    JAVA AQS源码分析
    kafka的安装 (单机)
  • 原文地址:https://www.cnblogs.com/gfwei/p/987586.html
Copyright © 2011-2022 走看看