XMLHTTP的get和post

本文介绍如何使用XMLHTTP对象模拟HTML表单的GET和POST方法。通过JavaScript代码实现客户端数据提交,并在服务器端处理这些数据,同时展示了如何处理特殊字符及编码问题。

//================================================================== //
用XMLHTTP来实现Form的Method=Get.
 //==================================================================
我们传统的提交数据的方法都是用<Form>来实现的. <Form>标记中的Method属性确定了表单元素的数据在发送到服务器时, 如何对HTTP请求信息进行打包.

Method 属性可以使用的方法 Method属性         发送表单元素的方式                              读取数据的Request集合 Get                        标识在URL的最后                                  QueryString            POST          在HTTP请求的主体内(HTTP请求的自由区域)  Form

这篇文章用XMLHTTP来实现Form的Method=Get.

ClientGet.htm

程序代码:
  1. <script language="JavaScript">  
  2.   
  3. function AddDataGet(sUserId,sUserName)   
  4.   
  5. {   
  6.   
  7. /*   
  8.   
  9.  *--------------- AddDataGet(sUserId,sUserName) -----------------   
  10.   
  11.  * AddDataGet(sUserId,sUserName)    
  12.   
  13.  * 功能:通过XMLHTTP添加数据.相当于Form的Method=Get.   
  14.   
  15.  * 参数:sUserId,字符串,发送条件.   
  16.   
  17.  * 参数:sUserName,字符串,发送条件.   
  18.   
  19.  * 实例:AddDataGet(document.all.userid.value,document.all.username.value);   
  20.   
  21.  * author:wanghr100(灰豆宝宝.net)   
  22.   
  23.  * update:2004-5-30 14:46   
  24.   
  25.  *--------------- AddDataGet(sUserId,sUserName) -----------------   
  26.   
  27.  */   
  28.   
  29.     var oBao = new ActiveXObject("Microsoft.XMLHTTP");   
  30.   
  31.     //特殊字符:+,%,&,=,?等的传输解决办法.用escape编码.   
  32.   
  33.     //Update:2004-6-1 12:22   
  34.   
  35.     //escape(sUserId),escape(sUserName);   
  36.   
  37.     oBao.open("POST","Server.asp?userid="+escape(sUserId)+"&username="+escape(sUserName),false);   
  38.   
  39.     oBao.send();   
  40.   
  41.     //清空输入框数据.   
  42.   
  43.     document.all.userid.value="";   
  44.   
  45.     document.all.username.value="";   
  46.   
  47.     //服务器端处理返回的是经过escape编码的字符串.   
  48.   
  49.     alert(unescape(oBao.responseText))   
  50.   
  51. }   
  52.   
  53. </script>  
  54.   
  55. <input type="button" onclick="AddDataGet(document.all.userid.value,document.all.username.value)" value="AddDataGet"><br>  
  56.   
  57. userid:<input type="text" name="userid"><br>  
  58.   
  59. username:<input type="text" name="username">  
<script language="JavaScript">

function AddDataGet(sUserId,sUserName)

{

/*

 *--------------- AddDataGet(sUserId,sUserName) -----------------

 * AddDataGet(sUserId,sUserName) 

 * 功能:通过XMLHTTP添加数据.相当于Form的Method=Get.

 * 参数:sUserId,字符串,发送条件.

 * 参数:sUserName,字符串,发送条件.

 * 实例:AddDataGet(document.all.userid.value,document.all.username.value);

 * author:wanghr100(灰豆宝宝.net)

 * update:2004-5-30 14:46

 *--------------- AddDataGet(sUserId,sUserName) -----------------

 */

    var oBao = new ActiveXObject("Microsoft.XMLHTTP");

    //特殊字符:+,%,&,=,?等的传输解决办法.用escape编码.

    //Update:2004-6-1 12:22

    //escape(sUserId),escape(sUserName);

    oBao.open("POST","Server.asp?userid="+escape(sUserId)+"&username="+escape(sUserName),false);

    oBao.send();

    //清空输入框数据.

    document.all.userid.value="";

    document.all.username.value="";

    //服务器端处理返回的是经过escape编码的字符串.

    alert(unescape(oBao.responseText))

}

</script>

<input type="button" onclick="AddDataGet(document.all.userid.value,document.all.username.value)" value="AddDataGet"><br>

userid:<input type="text" name="userid"><br>

username:<input type="text" name="username">
 
  1. <STRONG><SPAN class=Title><STRONG>Server.asp  服务器端处理.</STRONG></SPAN></STRONG>  
  2.   
  3. <TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0><TBODY><TR><TD>程序代码:</TD></TR></TBODY></TABLE>  
Server.asp  服务器端处理.

程序代码:
  1. <% @Language="JavaScript" %>  
  2.   
  3. <%   
  4.   
  5. function OpenDB(sdbname)   
  6.   
  7. {   
  8.   
  9. /*   
  10.   
  11.  *--------------- OpenDB(sdbname) -----------------   
  12.   
  13.  * OpenDB(sdbname)    
  14.   
  15.  * 功能:打开数据库sdbname,返回conn对象.   
  16.   
  17.  * 参数:sdbname,字符串,数据库名称.   
  18.   
  19.  * 实例:var conn = OpenDB("database.mdb");   
  20.   
  21.  * author:wanghr100(灰豆宝宝.net)   
  22.   
  23.  * update:2004-5-12 8:18   
  24.   
  25.  *--------------- OpenDB(sdbname) -----------------   
  26.   
  27.  */   
  28.   
  29.     var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);   
  30.   
  31.     var conn = Server.CreateObject("ADODB.Connection");   
  32.   
  33.     conn.Open(connstr);   
  34.   
  35.     return conn;   
  36.   
  37. }   
  38.   
  39. var sResult = "";   
  40.   
  41. var oConn = OpenDB("data.mdb");   
  42.   
  43. //相当于Form的Method=Get.   
  44.   
  45. //相当于Form的Method=Get.   
  46.   
  47. //特殊字符:+,%,&,=,?等的传输解决办法.客户端传输过来是经过escape编码的.   
  48.   
  49. //所以服用器端应该先用unescape解码.   
  50.   
  51. //Update:2004-6-1 12:22   
  52.   
  53. //unescape(Request.QueryString("userid")).....   
  54.   
  55. var userid = unescape(Request.QueryString("userid"));   
  56.   
  57. var username = unescape(Request.QueryString("username"));   
  58.   
  59. sResult = "userid:"+userid+"\nusername:"+username+"\n 添加成功."   
  60.   
  61. var sql = "Insert into users(userid,username)Values('"+userid+"','"+username+"')";   
  62.   
  63. oConn.Execute(sql);   
  64.   
  65. Response.Write(escape(sResult));   
  66.   
  67. %>  
<% @Language="JavaScript" %>

<%

function OpenDB(sdbname)

{

/*

 *--------------- OpenDB(sdbname) -----------------

 * OpenDB(sdbname) 

 * 功能:打开数据库sdbname,返回conn对象.

 * 参数:sdbname,字符串,数据库名称.

 * 实例:var conn = OpenDB("database.mdb");

 * author:wanghr100(灰豆宝宝.net)

 * update:2004-5-12 8:18

 *--------------- OpenDB(sdbname) -----------------

 */

    var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);

    var conn = Server.CreateObject("ADODB.Connection");

    conn.Open(connstr);

    return conn;

}

var sResult = "";

var oConn = OpenDB("data.mdb");

//相当于Form的Method=Get.

//相当于Form的Method=Get.

//特殊字符:+,%,&,=,?等的传输解决办法.客户端传输过来是经过escape编码的.

//所以服用器端应该先用unescape解码.

//Update:2004-6-1 12:22

//unescape(Request.QueryString("userid")).....

var userid = unescape(Request.QueryString("userid"));

var username = unescape(Request.QueryString("username"));

sResult = "userid:"+userid+"\nusername:"+username+"\n 添加成功."

var sql = "Insert into users(userid,username)Values('"+userid+"','"+username+"')";

oConn.Execute(sql);

Response.Write(escape(sResult));

%>
  1. <STRONG>数据库设计   
  2. </STRONG>data.mdb   
  3. 表users.   
  4. 字段   
  5. id              自动编号   
  6. userid          文本   
  7. username        文本   
  8.   
  9. 表:users 数据:    
  10. id      userid          username   
  11. 1       wanghr100       灰豆宝宝.net   
  12.   
  13. //==================================================================   
  14. //用XMLHTTP来实现Form的Method=Post.   
  15. //==================================================================   
  16. Method 属性可以使用的方法   
  17. Method属性      发送表单元素的方式                            读取数据的Request集合   
  18. Get             标识在URL的最后                                  QueryString   
  19. Post            在HTTP请求的主体内(HTTP请求的自由区域)  Form   
  20.   
  21.   
  22.   
  23.   
  24.   
  25. <STRONG><SPAN class=Title><STRONG>ClientPost.htm</STRONG></SPAN></STRONG>  
  26. <TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0><TBODY><TR><TD>程序代码:</TD></TR></TBODY></TABLE>  
数据库设计
data.mdb
表users.
字段
id              自动编号
userid          文本
username        文本

表:users 数据: 
id      userid          username
1       wanghr100       灰豆宝宝.net

//==================================================================
//用XMLHTTP来实现Form的Method=Post.
//==================================================================
Method 属性可以使用的方法
Method属性      发送表单元素的方式                            读取数据的Request集合
Get             标识在URL的最后                                  QueryString
Post            在HTTP请求的主体内(HTTP请求的自由区域)  Form





ClientPost.htm
程序代码:
  1. <PRE class=html name="code"><script language="JavaScript">  
  2.   
  3. function AddDataPost(sUserId,sUserName)   
  4.   
  5. {   
  6.   
  7. /*   
  8.   
  9.  *--------------- AddDataPost(sUserId,sUserName) -----------------   
  10.   
  11.  * AddDataPost(sUserId,sUserName)    
  12.   
  13.  * 功能:通过XMLHTTP添加数据.相当于Form的Method=Post.   
  14.   
  15.  * 参数:sUserId,字符串,发送条件.   
  16.   
  17.  * 参数:sUserName,字符串,发送条件.   
  18.   
  19.  * 实例:AddDataPost(document.all.userid.value,document.all.username.value);   
  20.   
  21.  * author:wanghr100(灰豆宝宝.net)   
  22.   
  23.  * update:2004-5-30 14:46   
  24.   
  25.  *--------------- AddDataPost(sUserId,sUserName) -----------------   
  26.   
  27.  */   
  28.   
  29.     var oBao = new ActiveXObject("Microsoft.XMLHTTP");   
  30.   
  31.     //特殊字符:+,%,&,=,?等的传输解决办法.   
  32.   
  33.     //Update:2004-6-1 12:22   
  34.   
  35.     //escape(sUserId),escape(sUserName);   
  36.   
  37.     sUserId = escape(sUserId);   
  38.   
  39.     sUserName = escape(sUserName);   
  40.   
  41.     var userInfo = "userid="+sUserId+"&username="+sUserName;   
  42.   
  43.     oBao.open("POST","Server.asp",false);   
  44.   
  45.     oBao.setRequestHeader("Content-Type","application/x-www-form-urlencoded")   
  46.   
  47.     oBao.send(userInfo);   
  48.   
  49.     //清空输入框数据.   
  50.   
  51.     document.all.userid.value="";   
  52.   
  53.     document.all.username.value="";   
  54.   
  55.     //服务器端处理返回的是经过escape编码的字符串.   
  56.   
  57.     alert(unescape(oBao.responseText))   
  58.   
  59. }   
  60.   
  61. </script>  
  62.   
  63. <input type="button" onclick="AddDataPost(document.all.userid.value,document.all.username.value)" value="AddDataPost"><br>  
  64.   
  65. userid:<input type="text" name="userid"><br>  
  66.   
  67. username:<input type="text" name="username"></PRE>  
  68. <PRE class=html name="code"> </PRE>  
  69. <PRE class=html name="code"><STRONG><SPAN class=Title><STRONG>Server.asp  服务器端处理. </STRONG></SPAN>  
  70.   
  71. </STRONG><TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0><TBODY><TR><TD>程序代码:</TD></TR></TBODY></TABLE></PRE>  
  72. <PRE class=html name="code"><PRE class=html name="code"><% @Language="JavaScript" %>  
  73.   
  74. <%   
  75.   
  76. function OpenDB(sdbname)   
  77.   
  78. {   
  79.   
  80. /*   
  81.   
  82.  *--------------- OpenDB(sdbname) -----------------   
  83.   
  84.  * OpenDB(sdbname)    
  85.   
  86.  * 功能:打开数据库sdbname,返回conn对象.   
  87.   
  88.  * 参数:sdbname,字符串,数据库名称.   
  89.   
  90.  * 实例:var conn = OpenDB("database.mdb");   
  91.   
  92.  * author:wanghr100(灰豆宝宝.net)   
  93.   
  94.  * update:2004-5-12 8:18   
  95.   
  96.  *--------------- OpenDB(sdbname) -----------------   
  97.   
  98.  */   
  99.   
  100.     var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);   
  101.   
  102.     var conn = Server.CreateObject("ADODB.Connection");   
  103.   
  104.     conn.Open(connstr);   
  105.   
  106.     return conn;   
  107.   
  108. }   
  109.   
  110. var sResult = "";   
  111.   
  112. var oConn = OpenDB("data.mdb");   
  113.   
  114. //相当于Form的Method=Post.   
  115.   
  116. //相当于Form的Method=Post.   
  117.   
  118. //特殊字符:+,%,&,=,?等的传输解决办法.客户端传输过来是经过escape编码的.   
  119.   
  120. //所以服用器端应该先unescape解码.   
  121.   
  122. //Update:2004-6-1 12:22   
  123.   
  124. //unescape(Request.Form("userid")).....   
  125.   
  126. var userid = unescape(Request.Form("userid"));   
  127.   
  128. var username = unescape(Request.Form("username"));   
  129.   
  130. sResult = "userid:"+userid+"\nusername:"+username+"\n 添加成功."   
  131.   
  132. var sql = "Insert into users(userid,username)Values('"+userid+"','"+username+"')";   
  133.   
  134. oConn.Execute(sql);   
  135.   
  136. Response.Write(escape(sResult));   
  137.   
  138. %></PRE>  
  139. <PRE class=html name="code"> </PRE>  
  140. <PRE class=html name="code"><STRONG>数据库设计   
  141. </STRONG>data.mdb   
  142. <FONT color=#32cd32>表users.</FONT>  
  143. <FONT color=#ff0000>字段</FONT>  
  144. id              自动编号   
  145. userid          文本   
  146. username        文本   
  147.   
  148. <STRONG>表:users 数据: </STRONG>  
  149. id      userid          username   
  150. 1       wanghr100       灰豆宝宝.net </PRE>  
  151. </PRE>  

转载于:https://www.cnblogs.com/zgqys1980/archive/2008/08/27/1277805.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值