通过jQuery实现AJAX
> 使用get和getJSON都会有缓存问题,并且使用get方法不能传送较多的数据。
问题:
在IE浏览器中,get请求使用ajax存在缓存问题,会使用上一次请求的结果处理请求,而不向服务器发送请求
解决办法:
在请求尾部带一个随机参数,如:var url="/MyProject/user?t="+Math.random();
post请求:通过send()方法传递参数,需要设置请求头,没有浏览器缓存问题
> post方法不会有缓存的问题,所以我们开发时使用post方法较多。
1、 post()方法
$.post(url, [data], [callback], [type])
参数:
url:发送AJAX的请求地址,字符串
data:发送给服务器的请求参数,JSON格式。
callback:当前需要获取服务器发送的响应时,我们可以通过该回调函数
jQuery会将响应信息以回调函数的参数的形式返回
type:响应信息的类型,字符串。一般两个常用值text、json
2、 get()方法
- get方法和post方法使用方式基本一致。
3、 getJSON()方法
getJSON(url, [data], [callback])
getJSON方法和get方法类似,只不过该方法默认的响应类型为JSON,不需要再手动指定。
代码演示:
1 $("input[name=username]").blur(function(){ 2 var url="${pageContext.request.contextPath}/user?method=isExists"; 3 var username=$("input[name=username]").val(); 4 var param={"username":username}; 5 function callback(data){ 6 if(data==1){ 7 $(".errorMsg").text("用户名已存在"); 8 $("#sub_btn").attr("disabled",true); 9 }else{ 10 $(".errorMsg").text("用户名可以使用"); 11 $("#sub_btn").attr("disabled",false); 12 } 13 } 14 $.post(url,param,callback,"text"); 15 });
Servlet中的验证方法:
1 public void isExists(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{ 2 String username=request.getParameter("username"); 3 boolean isExists=userService.isExists(username); 4 if(isExists){ //用户已存在 5 response.getWriter().println("1"); 6 }else { 7 response.getWriter().println("0"); 8 } 9 }