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); } %>
时间: 2024-10-08 17:44:38