使用jquery处理一般数据(四)

首先写一个html user.html 都需要导入jquery.js 和自己手写的js validate.js
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>用户校验ajax实例</title>
     <!-- ajax方式下不需要使用表单来进行数据提交,因此不用写表单标签form -->
     <!-- ajax方式不需要name属性,需要一个id属性 -->
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/validate.js"></script>
</head>
<body>
    用户名校验AJAX实例,请输入用户名:</br>
    <input type="text" id="userName"><br>
    <input type="button" value="检查" οnclick="validate()">
    <!--这个div用于存放服务器返回的信息,开始为空-->
     <!--id属性定义是为了利用dom的方式找到某一节点,进行操作-->
    <div id="result"></div>

    <!--<div id="result"></div><div>456</div>-->
    <!--<span>123</span><span>456</span>-->
    <!--div和span的直观差异,div中的内容独占行,span会和前后内容相连接-->
</body>
</html>


在写一个servlet类 AJAXServlet类
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 2010-4-15
 * Time: 14:16:11
 * To change this template use File | Settings | File Templates.
 */
public class AJAXServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        try{
            httpServletResponse.setContentType("text/html;charset=utf-8");
            PrintWriter out = httpServletResponse.getWriter();

            //加一个计数器 检测浏览器中缓存中的情况 根据不同的浏览器 看是不是读取同一个缓存
            Integer inte = (Integer) httpServletRequest.getSession().getAttribute("total");
            int temp = 0;
            if(inte == null){
                temp = 1;
            }else{
                temp = inte.intValue() + 1;
            }
            httpServletRequest.getSession().setAttribute("total",temp);

           
            //1.取参数
            String username = httpServletRequest.getParameter("username");
             //2.检查参数是否有问题
            if(username == null || username.length() == 0){
                out.println("用户名不能为空");
            } else{
                 //3.校验操作
                if(username.equals("wangxingkui")){
                    //4.和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
                    //写法没有变化,本质发生了改变
                    out.println("用户名[" + username + "]已经存在,请使用其他用户名, " + temp);
                } else{

                    out.println("用户名[" + username + "]尚未存在,可以使用该用户名注册, " + temp);
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    @Override
    protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
              doGet(httpServletRequest, httpServletResponse);
    }
}

后面有三个js其实都是一样的 就是写法不一样
一:写一个js validate.js

function validate(){
    //1.获取文本框中的内容
    //jquery的查找节点的方式,参数中#加上id的属性值就可以找到一个节点
    //jquery的方法返回的都是jquery的对象,可以继续在面执行其他的jquery操作
    var jqueryObj = $("#userName");
    //获取节点的值
    var userName = jqueryObj.val();

    //2.将文本框中的数据发送给服务器端的servlet
    //使用jquery的XMLHTTPRequest对象get请求的封装
    $.get("AJAXServlet?username=" + userName,null,callback);

}
function callback(data){
      //3.接收服务器端返回的数据
      alert(data);
      //4.服务器端返回的数据动态的显示在页面上
      //找到保存结果信息的节点
      var resultObj = $("#result");
      //动态改变页面中div节点中的内容
      resultObj.html(data);
}

二:还可以用jquery中的一种简化写法
function validate(){
    $.get("AJAXServlet?username=" + $("#userName").val(),null,function(data){
         $("#result").html(data);
    })
}


三:为了骗过浏览器缓存用jquery的一种写法
function validate(){
    var url = "AJAXServlet?username=" + $("#userName").val();
    url = converURL(url);
    $.get(url,null,function(data){
        $("#result").html(data);
    })

}

//给url地址增加时间戳,骗过浏览器,不读取缓存
function converURL(url){
     //获取时间戳
    var timestamp = (new Date()).valueOf();
    //将时间戳信息拼接到url上
    if(url.indexOf("?") >= 0){
        url = url + "&t" + timestamp;
    }else{
        url = url + "?t" + timestamp;
    }
    return url;
}

 

 


不忘了配置web.xml

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值