get请求的URL后面的参数不能传中文,工作中对get请求后的中文进行URL编码
js提供的URL编码和解码
encodeURl()Component编码与decodeURlComponent解码
encodURl()与encodeURlComponent()的区别:encodeURl函数不会对特殊字符进行处理:!、@、#、 $、&、*、 {}、=、:、/、;、?、+
推荐使用encodeURlComponent()
案例:修改之前get请求的URL编码
创建jsp登录页面LoginServlet
<script type="text/javascript">
//js登录方法
function login(){
//使用ajax往servlet发送get请求
//1.获取表单数据
var username=document.getElementById('username').value;
var password=document.getElementById('password').value;
//2.拼接表单数据
var params='username'+username+'&password'+password;
//对参数进行URL编码
params=encodeURIComponent(params);
//3.URL
var url='${pageContext.request.contextPath}/LoginServlet?'+params;
//4.使用ajax发送get请求
//4.1创建一个请求对象
var request=new XMLHttpRequest();
//4.2调用get请求方法,调用open方法的时候,都用异步请求true
request.open('get',url,true);
request.send();
//4.3接收服务器的响应
request.onreadystatechange=function(){
console.log('准备状态码:'+request.readyState+'---响应状态码:'+request.status);
if(request.readState==4&&request.status==200){
//接收服务器响应的数据
var rspText=request.responseTest;
console.log(rspText);
var jsonObj=JSON.parse(rspText);
//获取span标签
var tipTag=document.getElementById('tip');
if(jsonObj.success==1){
tipTag.innerHTML='登录成功';
}else{
tipTag.innerHTML=jsonObj.errMsg;
}
}
}
}
</script>
<span style="color:red" id='tip';></span>
<form>
用户名:<input type="text" name="username" id='''username'><br>
密码:<input type="password" type="password" name="password" id="password"><br>
<input type="button" value="登录" onclick="login()">
</form>