缓存问题:
何谓缓存问题?即当浏览器的输入内容相同,即请求的url相同,这样浏览器就会去读缓存,两次的内容一样,就不会和服务器端进行交互。
解决方式:在请求的url中加上时间戳。
通过我的测试,ie、360两次用户名输入一致时不会和服务器端交互,firefox即使两次用户名输入的一样,仍然会和服务器端交互。
即:firefox的中服务器端返回的temp值会每次加1,ie、360就不会改变。故加上时间戳在这三种浏览器中都不会再有缓存问题。
修改的代码:
ajaxserver.java
缓存问题
复制代码 代码如下:
//缓存问题加的测试代码 输入内容不变ie、360次数不增加,firefox会增加
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);
在ajaxserver.java 加入以上代码,同时out.println的时候把temp变量加进去返回给客户端。
这样,如果客户端的temp值加入,就表示客户端和服务器端进行了交互,否则就没有。
verify.js
复制代码 代码如下:
//给url地址增加时间戳,骗过浏览器,不读取缓存
function converturl(url){
//获取时间戳
var timestamp=(new date().valueof());
//将时间戳信息拼接到url上
//url=“ajaxserver”
if(url.indexof(?)>=0){
url=url+&t=+timestamp;
}else{
url=url+?t=+timestamp;
}
return url;
}
function verifycache(){
var url=ajaxserver?name=+$(#username).val();
url=converturl(url); //缓存
$.get(url,null,function(data){
$(#result).html(data);
});
}
由于只是问了验证和介绍缓存问题,为了便于说明问题,故采用的校验方式是jquery封装ajax接收服务器端文本数据。
》》》同样,别忘记了修改ajax.html中调用的方法,名称改为上述脚本中的verifycache()
中文问题:
有两种解决方式:
第一种:页面端使用一次encodeuri,服务器端用string name=new string(old.getbytes(iso8859-1),utf-8);
中文1
复制代码 代码如下:
function verifychinese1{
var url=ajaxserver?name=+encodeuri($(#username).val());
url=converturl(url); //缓存
$.get(url,null,function(data){
$(#result).html(data);
});
》》》在verify.js中加入上述方法,同时把
string name=new string(old.getbytes(iso8859-1),utf-8);
加入到ajaxserver.java类中的适当的位置。比如放在printwriter这句代码后面就可以。
同样,用第一种方式时,别忘记了修改ajax.html中调用的方法,名称改为上述脚本中的verifychinese1()
第二种:页面端使用两次encodeuri,服务器端用string name= urldecoder.decode(old,utf-8);
中文2
复制代码 代码如下:
function verifychinese2(){
var url=ajaxserver?name=+encodeuri(encodeuri($(#username).val()));
url=converturl(url); //缓存
$.get(url,null,function(data){
$(#result).html(data);
});
}
》》》在verify.js中加入上述方法,同时把
string name= urldecoder.decode(old,utf-8);
加入到ajaxserver.java类中的适当的位置。比如放在printwriter这句代码后面就可以。
同样,用第二种方式时,别忘记了修改ajax.html中调用的方法,名称改为上述脚本中的verifychinese2()
需要源码的可以留言。
通过几天的学习,ajax的动态的验证基本有所了解,后续会根据情况增加相应的内容。