XMLHttpRequest发送POST请求

1.前言

POST请求的适用性更广,可使用更大的请求参数,而且POST请求的请求参数通常不能直接看到。因此在使用Ajax发送请求时,尽量采用POST方式而不是GET方式发送请求。发送POST请求通常需要如下的三个步骤:

1)        使用open方法打开连接时,指定使用POST方式发送请求。

2)        设置正确的请求头,POST请求通常应设置Content-Type请求头

3)        发送请求,把请求参数转换为查询字符串,将字符串作为send()方法请求参数。

2.例子

1)        此处的代码与get的代码是差不多的,读者如果想要实现,自己可以修改。首先,我僮在first.html中修改为:

 // 事件处理函数,当下拉列表选择改变时,触发该事件
	function change(id)
	{
		// 初始化XMLHttpRequest对象
		createXMLHttpRequest();
		// 设置请求响应的URL
		var uri = "second.jsp"
		// 设置处理响应的回调函数
		xmlrequest.onreadystatechange = processResponse;
		// 设置以POST方式发送请求,并打开连接
		xmlrequest.open("POST", uri, true); 
		// 设置POST请求的请求头
		xmlrequest.setRequestHeader("Content-Type"
			, "application/x-www-form-urlencoded");
		// 发送请求
		xmlrequest.send("id="+id);
	}

2)        当然,使用GET的方法也是可以的,只要修改下面的形式就行了。

// 事件处理函数,当下拉列表选择改变时,触发该事件
	function change(id)
	{
		// 初始化XMLHttpRequest对象
		createXMLHttpRequest();
		// 设置请求响应的URL
		var uri = "second.jsp?id=" + id;
		// 设置处理响应的回调函数
		xmlrequest.onreadystatechange = processResponse;
		// 打开与服务器响应地址的连接
		xmlrequest.open("POST", uri, true);
// 设置POST请求的请求头
		xmlrequest.setRequestHeader("Content-Type"
			, "application/x-www-form-urlencoded");

		// 发送请求
		xmlrequest.send(null);
	}

运行的结果是跟GET的是一样的,读者可以先看GET的使用再阅读这一篇文章。

3.乱码问题

如果我们传入的是一个值为String的,那么就有可能会出现乱码问题,这下我们应该怎样处理呢?在second.jsp的页面添加下面的代码片段就可行了。

 <%
// 处理POST请求
if (request.getMethod().equalsIgnoreCase("POST"))
{
	request.setCharacterEncoding("UTF-8");
	System.out.println(request.getParameter("value"));
}
// 处理GET请求
else if (request.getMethod().equalsIgnoreCase("GET"))
{
	String tmp = request.getParameter("value");
	String a = new String(tmp.getBytes("ISO-8859-1") , "UTF-8");
	System.out.println(a);
}
%>




  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值