jquery中ajax学习笔记4

 更新时间:2011年10月16日 23:21:44   作者:  
本节主要介绍两点:1.缓存问题 2.中文问题
缓存问题:
何谓缓存问题?即当浏览器的输入内容相同,即请求的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的动态的验证基本有所了解,后续会根据情况增加相应的内容。

相关文章

  • jQuery实现简单的tab标签页效果

    jQuery实现简单的tab标签页效果

    这篇文章主要介绍了jQuery实现简单的tab标签页效果,涉及jQuery简单元素遍历与样式动态操作相关技巧,需要的朋友可以参考下
    2016-09-09
  • JQuery扩展插件Validate—4设置错误提示的样式

    JQuery扩展插件Validate—4设置错误提示的样式

    JQuery扩展插件Validate—4设置错误提示的样式,使用Validate的朋友可以参考下。
    2011-09-09
  • jquery计算鼠标和指定元素之间距离的方法

    jquery计算鼠标和指定元素之间距离的方法

    这篇文章主要介绍了jquery计算鼠标和指定元素之间距离的方法,涉及jQuery针对页面位置属性与鼠标事件的相关操作技巧,需要的朋友可以参考下
    2015-06-06
  • JQuery Tips相关(1)----关于$.Ready()

    JQuery Tips相关(1)----关于$.Ready()

    学习jQuery的第一件事是:如果你想要一个事件运行在你的页面上,你必须在$(document).ready()里调用这个事件。所有包括在$(document).ready()里面的元素或事件都将会在DOM完成加载之后立即加载,并且在页面内容加载之前。
    2014-08-08
  • JQuery模拟实现网页中自定义鼠标右键菜单功能

    JQuery模拟实现网页中自定义鼠标右键菜单功能

    这篇文章主要给大家介绍了关于利用JQuery模拟实现网页中自定义鼠标右键菜单功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • jQuery遮罩层实例讲解

    jQuery遮罩层实例讲解

    这篇文章主要为大家详细介绍了jQuery遮罩层实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • jQuery 拖动层(在可视区域范围内)

    jQuery 拖动层(在可视区域范围内)

    获取层元素,在浏览器可视区域的最左、最边,最上、最下的值。并且在拖动层的过程中,把当前层的坐标值,去和这几个值,做比较,如果超过这些值。那么就不能再拖动这个方向,即把值设为最小或最大
    2012-05-05
  • artDialog双击会关闭对话框的修改过程分享

    artDialog双击会关闭对话框的修改过程分享

    artDialog,一个jquery的对话框插件但是在使用时发现鼠标双击时会自半对话框,下面与大家分享下具体的修改过程,感兴趣的朋友可以参考下
    2013-08-08
  • jQuery实现图片左右滚动特效

    jQuery实现图片左右滚动特效

    这篇文章主要介绍了jQuery合作伙伴左右滚动特效,功能实现非常简单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • 基于jquery实现轮播焦点图插件

    基于jquery实现轮播焦点图插件

    这篇文章主要为大家详细介绍了基于jquery实现轮播焦点图插件,具有一定的参考价值,代码很详细,感兴趣的小伙伴们可以参考一下
    2016-03-03

最新评论