vlambda博客
学习文章列表

原生Ajax与JSON实践二(Post请求)

为了方便看便将POST和GET分为两部分。在本文中,将对POST请求进行介绍。与GET请求相比POST请求的最大不同是URL中无参数,并且需要进行一些请求方法的声明。该请求所对应的Servlet仍然是上一篇文章中的Servlet (原生Ajax与JSON实践一)。

代码如下:

index2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>项目登录2</title>
<script type="text/javascript"> //js的登录方法 function login(){ //使用Ajax向servlet发送post请求 //1.获取表单的数据 var username = document.getElementById("username").value; var password = document.getElementById("password").value;
//2.拼接表单数据 var params = "username="+username+"&password="+password; console.log(params); //3.url var url = "${pageContext.request.contextPath}/loginServlet"; console.log(url);
//4.使用Ajax发送post请求 //4.1创建一个请求对象 var request = new XMLHttpRequest();
//4.2调用post请求的方法
request.open("post",url,true);//使用get请求,true表示异步请求 // 设置post请求头 request.setRequestHeader("content-type","application/x-www-form-urlencoded"); request.send(params); request.onreadystatechange = function () { console.log("准备状态码-"+request.readyState+":响应状态码"+request.status) if(request.readyState==4 &&request.status==200){ var rspText = request.responseText; console.log(rspText) //获取span标签 var tipTag = document.getElementById("tip") if(rspText=="success"){ tipTag.innerHTML = "登录成功" }else{ tipTag.innerHTML = "登录失败" } } } }</script>
</head> <body> <p>非异步请求</p><%-- 非异步请求 --%> <form action="${pageContext.request.contextPath}/loginServlet"> <input type="text" name="username"><br> <input type="password" name="password"><br> <input type="submit" value="登录"><br> </form> <p>------------------------------------------------</p><%--异步请求 GET--%><p>异步请求</p> <form> <input type="text" name="username" id="username"><br> <input type="password" name="password" id="password"><br> <input type="button" value="登录" onclick="login()"><br> </form><span style="color: red" id = "tip"> </span>
</body></html>

需要注意的是需要声明一个请求头:

request.setRequestHeader("content-type","application/x-www-form-urlencoded");