您的位置:首页 > 理论基础 > 计算机网络

ajax的初次使用与解决缓存问题

2009-06-10 10:06 573 查看
1、ajax核心代码: (a.jsp代码)

<script type="text/javascript">

    var req;    

    function v()

    {    

        var idField = document.getElementById("loginname");

        var url = "../registerusercheckloginname?rand="+Math.random()+"&loginname=" + idField.value;

        if(window.XMLHttpRequest) {

            req = new XMLHttpRequest();

        } else if (window.ActiveXObject) {

            req = new ActiveXObject("Microsoft.XMLHTTP");

        }

        req.open("GET", url, true);

        req.onreadystatechange = callback;

        req.send(null);      

    }

    function setMsg(msg) {

        mdiv = document.getElementById("usermsg");

        if(msg == "no") {

            mdiv.innerHTML = "登录名已经存在,请修改当前的登录名!";

        }if(msg=="yes"){

        

            mdiv.innerHTML = "";

        }

    }

    

    function callback(){

        if(req.readyState == 4) {

            if(req.status == 200) {             

                setMsg(req.responseText);

            }

        }

    }   

</script>

注:在a.jsp页面中加上:

<td width="76%"><table><tr><td><input type="text" name="loginname" maxlength="30" size="18" onBlur="v()"><font color="red">*</font><td style="color:red"><span style="font-size: 10px;" id="usermsg"></span></table></td>

 

2、registerusercheckloginname(servlet代码:)

public class registerusercheckloginname extends HttpServlet {

    public registerusercheckloginname() {

        super();

    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        doPost(request,response);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        PrintWriter out = response.getWriter();  

        DBConnect dbc = null;   

        ResultSet rs=null;

        String loginname=(String)request.getParameter("loginname");  

        try{

            dbc  = new DBConnect();

            dbc.prepareStatement("select * from ams_user where loginname=?");//成功

            System.out.println("logname="+loginname);

            PreparedStatement pre=dbc.getPreparedStatement();

            pre.setString(1,loginname);   

            rs = pre.executeQuery();       

            if(rs.next()){ 

              out.write("no");              

            } else

                  out.write("yes");

        }catch(Exception e){}      

    }

}

3、缓存问题解决方法:

a:在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数

在javascript发送的URL后加上t=Math.random()

当然,不是直接把t=Math.random()拷贝到URL后面,应该像这样:URL+"&"+"t="+Math.random();

b:在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0")

一般情况下,这里的XMLHttpRequest不会直接使用

你应该可以找到这样的代码

XXXXX.send(YYYYYY);

那么,就把它变成

XXXXX.setRequestHeader("If-Modified-Since","0");

XXXXX.send(YYYYYY);

第二种方法感觉挺好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息