微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在ajax中解决浏览只读取缓存和中文字符乱码问题

实现原理:我们把提交到服务器端的URL的地址在每次提交时都让它与上一次不同,大家就会想到时间,这样服务器每次都接收到不同的URL,就不会读取缓存了。

解决中文乱码通常的2种方法

//1.页面端发出的数据做一次encodeURI,服务器端使用new String(name.getBytes("iso8859-1"),"UTF-8");
//2.页面段发出的数据作两次encodeURI,服务器端使用RLDecoder.decode(nameStr,"UTF-8");

<script type="text/javascript" src="js/jquery-1.4.js"></script>
<script type="text/javascript">
function testClick(){
var obj = $("#name");
var name = obj.val();
var url = "testServlet?name="+encodeURI(encodeURI(name)); //解决提交的数据乱码问题
url = convertURL(url);
//alert(url);
$.get(url,true,callback);
}
//给URL地址增加时间戳,骗过浏览器,不读取缓存
function convertURL(url){
//获取时间戳
var tiMetamp = (new Date()).valueOf();
//将时间戳信息拼接到URL地址上面去
//url = "testServlet";
if(url.indexOf("?")>=0){
url = url + "&t="+tiMetamp;
}else{
url = url + "?t="+tiMetamp;
}
return url;
}
function callback(data){
//alert("服务器的数据回来了!");
$("#msg").html(data);
}
</script>

<input id="name" ><input type="button" value="测试" onclick="testClick()"/>

<br/><div id="msg"></div>

下面是服务器端:

response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); //定义变量,存储连续请求的次数 Integer inte = (Integer)request.getSession().getAttribute("total"); int temp =0; if(inte==null){ temp = 1; }else{ temp = inte.intValue()+1; } request.getSession().setAttribute("total",temp); String nameStr = request.getParameter("name"); //String name = new String(nameStr.getBytes("iso8859-1"),"UTF-8"); String name = URLDecoder.decode(nameStr,"UTF-8"); PrintWriter out = response.getWriter(); if(name==null || name.length()==0){ out.print("用户名为空"+temp); }else{ if(name.equals("peter")){ out.print("用户名"+name+"正确"+temp); }else{ out.print("用户名"+name+"错误"+temp); } } out.flush(); out.close();

原文地址:https://www.jb51.cc/ajax/165759.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐