我在客户端使用返回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+"");//注:这次每次访问都能执行.代表每次都从数据库里读取到相应的数据的
但客户端为什么就接收不到呢.望高手指导一下.

解决方案 »

  1.   

    这个现象很头在,在IE上多次访问服务端不行,但在火狐上就行.火狐上每次都能全部返回.
    怎么样解决IE上访问的问题.希望大家多给我点意见.注:IE不行,火狐行.
      

  2.   

    设置页面no-cach//设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);Ajax调用成功但页面结果未刷新往往是cach在做怪
      

  3.   

    在JSP的什么地方设置,能不能说详细点.谢谢.
      

  4.   

    function bisu(i){if(request.readyState==4){
    if(request.status == 200){
    var out_ajax = document.getElementById("priceDiv"+i);
    var date = request.responseText;
    alert(date);
    out_ajax.innerHTML=date;
    }
    }
    }试一下这个
      

  5.   

    可能是我没有说得太清楚.现在的情况是.在火狐下,AJAX一切正常.
    但在IE的时候,回调函数都调用不了.但服务端每次都有相应输出.
      

  6.   

    你没有把out关闭掉,应该加上out.close();
      

  7.   

    加了也没有用.
    全部代码如下:客户端:
    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的环境下.
      

  8.   


    94楼主你request没写浏览器兼容。
      

  9.   

    但是我的在浏览器里都行呀:
    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();
    }