我在客户端使用返回AJAX访问服务器.代码如下:
function ajax(i,id){
var state = document.getElementById("sele1"+i).value;
request.onreadystatechange=function(){bisu(i)};
var url = "AjaxPriceServlet?ajaxstate="+state+"&id="+id+"&_d=" + new Date().getTime();
alert(url);
request.open("post",url,true);
request.send(null);
}
function bisu(i){
if(request.readyState==4){
var out_ajax = document.getElementById("priceDiv"+i);
var date = request.responseText;
alert(date);
out_ajax.innerHTML=date;
}
其它省略:服务端如下:
response.setHeader("Cache-Control", "no-cache, must-revalidate"); response.setHeader("Cache-Control", "no-cache, must-revalidate");
String ajaxstate = request.getParameter("ajaxstate");
//ajaxstate = Service.getReturnStr(ajaxstate);
String strId = request.getParameter("id");
String sql = "select " + state + " from clientlog where id = " + id;
double outPrice = com.clientLog.model.ClientModel.getClientModel().getAjaxPrice(sql);
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print(outPrice+" 分");
out.flush();
System.out.println(outPrice+"");//注:这次每次访问都能执行.代表每次都从数据库里读取到相应的数据的
但客户端为什么就接收不到呢.望高手指导一下.
function ajax(i,id){
var state = document.getElementById("sele1"+i).value;
request.onreadystatechange=function(){bisu(i)};
var url = "AjaxPriceServlet?ajaxstate="+state+"&id="+id+"&_d=" + new Date().getTime();
alert(url);
request.open("post",url,true);
request.send(null);
}
function bisu(i){
if(request.readyState==4){
var out_ajax = document.getElementById("priceDiv"+i);
var date = request.responseText;
alert(date);
out_ajax.innerHTML=date;
}
其它省略:服务端如下:
response.setHeader("Cache-Control", "no-cache, must-revalidate"); response.setHeader("Cache-Control", "no-cache, must-revalidate");
String ajaxstate = request.getParameter("ajaxstate");
//ajaxstate = Service.getReturnStr(ajaxstate);
String strId = request.getParameter("id");
String sql = "select " + state + " from clientlog where id = " + id;
double outPrice = com.clientLog.model.ClientModel.getClientModel().getAjaxPrice(sql);
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print(outPrice+" 分");
out.flush();
System.out.println(outPrice+"");//注:这次每次访问都能执行.代表每次都从数据库里读取到相应的数据的
但客户端为什么就接收不到呢.望高手指导一下.
怎么样解决IE上访问的问题.希望大家多给我点意见.注:IE不行,火狐行.
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);Ajax调用成功但页面结果未刷新往往是cach在做怪
if(request.status == 200){
var out_ajax = document.getElementById("priceDiv"+i);
var date = request.responseText;
alert(date);
out_ajax.innerHTML=date;
}
}
}试一下这个
但在IE的时候,回调函数都调用不了.但服务端每次都有相应输出.
全部代码如下:客户端:
var request;
function createRequest() {
if(window.ActiveXObject){
request = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.ActiveXObject){
request = new ActiveXObject("Msxml2.XMLHTTP.4.0");
}else if(window.ActiveXObject){
request = new ActiveXObject("Msxml2.XMLHTTP");
}else if(window.XMLHttpRequest){
request = new XMLHttpRequest();}
}
createRequest();
function ajax(i,id){
var state = document.getElementById("sele1"+i).value;
var url = "AjaxPriceServlet?ajaxstate="+state+"&id="+id+"&_d=" + new Date().getTime();
//alert("url:"+url);
request.onreadystatechange=function(){bisu(i)};
//alert("已经调用回调函数");
request.open("post",url,true);
//alert("已经调用OPEN");
<%-- request.setRequestHeader("If-Modified-Since","0"); --%>
<%-- request.setRequestHeader("Cache-Control","no-cache"); --%>
request.send(null);
//alert("已经调用send");
}
function bisu(i){
// alert("BISU里的状态:"+request.readyState);
if(request.readyState==4){
var out_ajax = document.getElementById("priceDiv"+i);
var date = request.responseText;
//alert("服务端返回的信息"+date);
out_ajax.innerHTML=date;
}
}
服务端:
String ajaxstate = request.getParameter("ajaxstate");
String strId = request.getParameter("id");
String state = "";
if (ajaxstate.equals("1")) {
state = "YDprice";
} else if (ajaxstate.equals("2")) {
state = "LTprice";
} else if (ajaxstate.equals("3")) {
state = "DXprice";
}
int id = 0;
if (strId != null) {
id = java.lang.Integer.parseInt(strId);
}
String sql = "select " + state + " from clientlog where id = " + id;
double outPrice = com.clientLog.model.ClientModel.getClientModel().getAjaxPrice(sql);
response.setHeader("Cache-Control ", "no-cache");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print(outPrice + " 分");
out.close();
System.out.println(outPrice + " a分");
注:IE不行,火狐行,主要是解决在IE的环境下.
94楼主你request没写浏览器兼容。
try {
try {
PrintWriter out = response.getWriter();
if (vmInfo.getName().equals(vmName)) {
out.print("success");
} else if (getServerDelegate().getVMsByName(vmName, false,
hostID).size() > 0) {
out.print("error");
} else {
out.print("success");
}
out.close();
} catch (KQException e) {
if (DebugSwitch.isShowExceptionStack()) {
e.printStackTrace();
}
this.addActionError(getText(e.getErrorCode()));
} } catch (IOException e) { e.printStackTrace();
}