自己做了一个ajax的小例子!
勉强成功啊!但是还有些问题不知道什么意思啊
希望得到大家的帮助啊!
下文中的注释部分就是我的问题啊!
如果也想跑ajax的也可以参考一下啊
都跑通了
环境是jbX下的tomcat3.3!因为5.xxx有其他项目。
另外直接在servlet 的 sample 路径下跑的不需要设置.xmlStart*****************ajax.jsp*******************************Start
<html>  
<head>  
<title>  
ajax  
</title>  
</head>  
<body bgcolor="#ffffff">  
<h1>  <input name="username" type="text" maxlength="20" />  
<input id="ts" type="button" value="jczh" onclick="testName()" />  
<div id="view_name"></div> 
</h1>  
</body>  
</html>  
<script language="javascript">  
 //下面这些是定式吗?
  if (window.ActiveXObject && !window.XMLHttpRequest) 
  {  
      window.XMLHttpRequest=function() 
      {  
       return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');  
      };  
  }
 //上面这些是定式吗?
function testName()
{  
      var view_name=document.getElementById("view_name");  
      var req=new XMLHttpRequest(); 
     
      if (req) 
      {  
         alert("req=="+req); 
         //这是什么意思啊?
          req.onreadystatechange=function() 
          {  
           //req.readyState、req.status是什么啊?为什么是4和200呢?
           if (req.readyState==4 && req.status==200) 
           {
               alert("responseText="+req.responseText);
                 if(req.responseText==0)
                 {  
                 view_name.style.color='green';  
                 view_name.innerHTML='zcsy?';  
                 }
                 else if(req.responseText==1)
                 {  
                 view_name.style.color='red';  
                    view_name.innerHTML='ybsy!';  
                 }
                 else
                 {  
                     view_name.style.color='red';  
                     view_name.innerHTML='ffzf*';  
                 }  
          }  
         }  
           //如果数据量大的话怎!接收啊servletAjax传过来的xml数据啊?  
                        req.open('POST', '../servlet/servletAjax');
  req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
                        req.send("");
      }  
}  
</script>  End*****************ajax.jsp*******************************End
Start*****************servletAjax.java*******************************Startimport javax.servlet.http.HttpServlet;
import javax.servlet.*;
import java.io.*;public class servletAjax
    extends HttpServlet {
  public void service(ServletRequest request, ServletResponse response) throws
      IOException {
    
    //ajax.jsp Post过来的数据为什么我一个都收不到呢?
    String strName = request.getParameter("username");
    System.out.println("strName==" + strName + ".");    String strViewName = request.getParameter("view_name");
    System.out.println("strViewName==" + strViewName + ".");    String strTs = request.getParameter("ts");
    System.out.println("strTs==" + strTs + ".");    BufferedReader sis = new BufferedReader(new InputStreamReader(request.
        getInputStream()));
    String strLine = sis.readLine();
    System.out.println("Length......." + request.getContentLength() + ".");
    
    String sum = ".";
    while (strLine != null) {
      sum += sis.readLine();
    }
    System.out.println(sum);
    
    //如果数据量大的话怎么用xml发送和接收啊?  
    response.getOutputStream().print(2);
  }
}End*****************servletAjax.java*******************************End

解决方案 »

  1.   

    1.是定式
    2.alert()相当于system.out.println();
    3.req.readyState、req.status是什么啊?为什么是4和200呢?如果是4和200表示连接上了服务端
      

  2.   

    //ajax.jsp Post过来的数据为什么我一个都收不到呢?
        String strName = request.getParameter("username");
        System.out.println("strName==" + strName + ".");    String strViewName = request.getParameter("view_name");
        System.out.println("strViewName==" + strViewName + ".");    String strTs = request.getParameter("ts");
        System.out.println("strTs==" + strTs + ".");//如果数据量大的话怎!接收啊servletAjax传过来的xml数据啊?  
                            req.open('POST', '../servlet/servletAjax');
     req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
                            req.send("");
          }  
      

  3.   

    谢谢  ddppfamily(肉的坨~)
      

  4.   

    1、什么意思啊?反正就是创建xmlhttp对象,可以有很多种写法,而且也可以包括很多浏览器的支持版本。IE和FF的xmlhttp对象创建方法是不同的
    2、alert是警告框,就是谈出一个警告,一般用在告警或者测试用
    3、这些数字请直接搜索readyState、status,这些都是http协议里面定义的东西。记录了当前交互中的种种状态
    4、你用post的时候,需要在send里面加上你的传递数据。实际上他们都是走GET的方式来的,所以应该要写
    o.send("a=b&c=d");
    5、一般来的数据都是可以处理的,如果数据库量比较大的话,那我也不太清楚,也没有去考虑过。
      

  5.   

    基本算定试,你自己也可以重写.
    alert警告框.
    post过来的,你要写在httpservlet的post函数里写request.getParameter.
    大数据量都是用xml传数据的,你也可以用json
      

  6.   

    if (window.ActiveXObject && !window.XMLHttpRequest) 
      {  
          window.XMLHttpRequest=function() 
          {  
          return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');  
          };  
      }
    这里确实可以说是固定写法,作用是获得该对象,其实有另一种不同的写法,但是功能是一样的req.onreadystatechange=function()  这个是指定返回的信息用哪个方法处理 if (req.readyState==4 && req.status==200)表示该页面存在String strName = request.getParameter("username");
    这里可能四因为确实没有提高过数据来的原因,检查下那个输入框是否是叫username其他的我就不知道了
      

  7.   

    1.基本算是定式,但也不完全是,也可以又别的写法,但目的都一样。
    2.req.onreadystatechange=function() 
    onreadystatechange是一个方法,当其状态改变时,就会调用你自己的函数。这个方法名称是固定这样写的。
    3.你说的4,200都是一些状态值,这些你可以查看一些ajax的基础资料,里面一般都会说。
    4.ajax一般使用xml来传递数据,在后台将数据封装成xml,然后在前台用js来解析这些xml来获取数据。你虽然运行了示例,但还是不了解ajax,建议lz多多了解ajax的运行原理,这样才能用好ajax。