问题补充:
我把alert(str);放到xmlHttp.send(null);之前
光提示,没有数据显示。
我把alert(str);放到var responseText=xmlHttp.responseText;
之后连提示都没有了。

解决方案 »

  1.   

    怎么样去掉alert(str); 还有response的数据显示?
      

  2.   

    你注释掉的那段
    xmlHttp.onreadystatechange = function(){
      if(xmlHttp.readyState == 4 && xmlHttp.status = 200)
        {
        var responseText=xmlHttp.responseText;
        document.getElementById("cllx").value = xmlHttp.responseText;
        }
      }是正确的方式,你直接读返回值,那时服务器还没返回呢,ajax是异步的,不是同步,你那么写当然不会有什么结果alert()不过是延误了一下时间,所以才会有效果。但是网速慢的情况下,也不一定就能行。
      

  3.   

    把你注视掉的那段放在open和send的中间。
    alert及下面的都去掉再试试看:
    <script language="JavaScript">var req = false;if(window.XMLHttpRequest){ 
    req=new XMLHttpRequest();
      if(req.overrideMimeType){
       req.overrideMimeType("text/xml");
       }
    }
    else if(window.ActiveXObject){ 
    try{
    req=new ActiveXObject("Msxml2.XMLHttp");
    }catch(e){
    try{
    req=new ActiveXobject("Microsoft.XMLHttp");
    }catch(e){}
    }
    }function send_request(url){
        if(!req){
         alert("创建XMLHttp对象失败!");
         return false;
        }
    req.open("GET",url,true);
    req.onreadystatechange=processrequest;
    req.send(null);
    }
      
      //处理返回信息的函数
    function processrequest(){
     if(req.readyState==4){ //判断对象状态
      if(req.status==200){ //信息已成功返回,开始处理信息
       //alert(req.responseText);
         document.getElementById("subType").innerHTML=req.responseText;
      }
      else{
       alert("您所请求的页面不正常!");
      }
     }
    }
      

  4.   


    没错!玩ajax一定要理解异步!!
    你的js运行完了,但是异步处理的程序还没完呢。
      

  5.   

    谢谢楼上各位了,目的实现了。
    还有个小问题,很多例子都是document.getElementById("cllx").innerHTML赋值,
    我使用document.getElementById("cllx").value才赋值成功。
    是不是后台代码的关系?
    后台页面我是这样写的response.getWriter().write(lRs.getString("cllx"));
    如果我用innerHTML赋值,应该怎么写?
      

  6.   

    AJAX异步,跟多线种一个意思。
    使用AJAX返回的结果,要在回调函数中使用。
      

  7.   

    AJAX异步,跟多线种一个意思。
    使用AJAX返回的结果,要在回调函数中使用。