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);
第二种方法感觉挺好
<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);
第二种方法感觉挺好
相关文章推荐
- Query中ajax的使用与缓存问题的解决方法
- Query中ajax的使用与缓存问题的解决方法
- jQuery中ajax的使用和缓存问题解决 $getjson 与$get都会被IE缓存
- jQuery中ajax的使用与缓存问题的解决方法
- jQuery中ajax的使用与缓存问题的解决方法
- jQuery中ajax的使用与缓存问题的解决方法
- jQuery中ajax的使用和缓存问题解决
- Query中ajax的使用与缓存问题的解决方法
- jQuery中ajax的使用和缓存问题解决
- Query中ajax的使用与缓存问题的解决方法
- 解决使用Ajax时浏览器的缓存问题
- 【郭林专刊】jQuery中ajax的使用和缓存问题解决
- 解决 在生成的thickbox页面使用ajax的“缓存问题”
- Query中ajax的使用与缓存问题的解决方法
- Query中ajax的使用和缓存问题解决
- 【郭林专刊】jQuery中ajax的使用和缓存问题解决
- Query中ajax的使用与缓存问题的解决方法
- jQuery中ajax的使用和缓存问题解决
- Query中ajax的使用与缓存问题的解决方法
- 解决使用Ajax时浏览器的缓存问题