jquery ajax 缓存问题,jQuery_jquery中ajax学习笔记4,缓存问题: 何谓缓存问题?即 - phpStudy...

jquery中ajax学习笔记4

缓存问题:

何谓缓存问题?即当浏览器的输入内容相同,即请求的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的动态的验证基本有所了解,后续会根据情况增加相应的内容。相关阅读:

Ghost修复U盘启动盘的过程

7.3 在ASP中实现购物小车

网页制作教程:弹出层详解

Javascript标准DOM Range操作全集

DOS环境下破除WindowsXP登陆密码

MySQL 建表的优化策略 小结

提升Vista SP2搜索效率2则技巧

一个开发人员眼中的JSP技术(上)

一个ACCESS数据库数据传递的方法

CSS解决链接锚点定位偏移的代码

Mysql服务器的启动与停止(一)

JS用 或 || 来兼容FireFox

java 截取字符串(判断汉字)

在映象文件执行选项中指定调试器杀毒

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值