写在前面的话:

XMLHttpRequest对象的open方法的第一个参数为request-type,取值可以为get或post.本篇介绍post请求.

使用post方式时,浏览器会把各表单中字段元素及其数据作为Http消息的实体内容发送给Web服务器.

使用post方式时,要注意设置Content-Type的内容为application/x-www-form-urlencoded,设置此内容是为了确保服务器知道实体中有参数变量.

使用post方式时,参数是随着send方法发送出去的,如send(data).

使用post方式时,服务器端获取参数时,需要使用Request.Form[data].

例子

客户端HTML代码不变,js代码如下:

function btn_click() {
//获取参数
var username = document.getElementById("txt_username").value;
var age = document.getElementById("txt_age").value;
//设置字符串参数,并进行编码
var args = "username=" + encodeURIComponent(username) + "&age=" + encodeURIComponent(age); //创建XMLHttpRequest对象
var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); //配置连接及方式
//使用post方式不用担心缓存问题
xmlHttp.open("post", "post.aspx", true); //设置Content-Type类型为aapplication/x-www-form-urlencoded,以告知服务器实体中有参数
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //设置回调函数
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
document.getElementById("result").innerHTML = xmlHttp.responseText;
}
} //发送参数
xmlHttp.send(args);

服务器端代码:

protected void Page_Load(object sender, EventArgs e)
{
Response.Clear(); //使用Request.Form来获取数据
string username = Request.Form["username"];
int age = int.Parse(Request.Form["age"]); Response.Write("姓名:'" + username + "'<br/>年龄:" + age + "<br/>时间:'" + DateTime.Now.ToString() + "'"); Response.End();
}

现在,我们仍然输入张三,30这两条数据,然后实用工具检查下,看到底发送了什么.

OverView:

发送的HTTP Header:

获取的HTTP Header

缓存:(此处可以看出,post请求是不会被换缓存的)

Post的内容:(在get请求时,数据是通过url发送的)

小结:

本片介绍了post是如何使用的.随后的文章,我们会对get请求与post请求做个比较,究竟什么时候适合get请求,什么时候适合post请求呢.

最新文章

  1. 史航第12次作业&amp;总结
  2. 2016HUAS暑假集训题1 J - 迷宫问题
  3. LINQ-to-SQL那点事~LINQ-to-SQL中的数据缓存与应对
  4. BZOJ K大数查询(分治)(Zjoi2013)
  5. 查看perl及其模块
  6. ccnu-线段树联系-单点更新2-B
  7. 5. Fragment详解
  8. javac。java版本切换
  9. 使用pdb调试python
  10. poj2229Sumsets
  11. content:attr()
  12. CodeForces 689C Mike and Chocolate Thieves (二分最大化最小值)
  13. 系统里有Courier New字体 Eclipse没有这个字体选项
  14. CVE-2016-3714 - ImageMagick 命令执行
  15. Linux(Ubunt)使用日记------常用软件汇总(不定时更新)
  16. RCNN算法的tensorflow实现
  17. Java面试题复习笔记(Web方向)
  18. python-常见用法
  19. mysql 查询语句严格区分大小写
  20. vue系列之vue-resource

热门文章

  1. pmap
  2. iOS工程师Mac上的必备软件
  3. C语言中一个替换 strcpy的极好的方法
  4. ShareSdk使用心得
  5. NYOJ题目809摸底
  6. hud 1019最小公倍数
  7. C#的反射机制
  8. win10下安装Ubuntu + 修复Ubuntu引导
  9. 华为Mate8 NFC 时好时坏,怎么解决呢?
  10. 攻城狮在路上(叁)Linux(二十五)--- linux内存交换空间(swap)的构建