ajax就是异步调用,一般的例子都是调用servlet,Lz应该明白struts的action其实就是servlet。
所以这样理解就可以了。Ajax实现三级联动下拉框
http://www.blogjava.net/rickhunter/articles/62571.html这个例子就是ajax+struts的,没有使用任何ajax框架。最后要指出一点,ajax的框架没有一个可以很好的与struts1.x结合的。

解决方案 »

  1.   

    这个我知道,可是我按照网上的做了一个例子,怎么运行不起来啊
    这是我的代码
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GBk">
    <title>ajax+struts</title>
    </head>
    <script type="text/javascript" >        
      var xmlHttp;
     
     function createXMLHttpRequest() {
                if (window.ActiveXObject) {
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                else if (window.XMLHttpRequest) {
                    xmlHttp = new XMLHttpRequest(); 
                                 
                }
            }
     function testName()
     {
       
        alert("start");  
      createXMLHttpRequest();
          var url="/ajax.do";
          xmlHttp.open("GET", url,true);
          
          xmlHttp.onreadystatechange=callback;
          xmlHttp.send("");  }
         
     function callback() {
                if (xmlHttp.readyState == 4) {
                alert("sf");
                    if (xmlHttp.status == 200) {
                        alert("sfffff");
                        setData();
                    }
                }
            }
     function setData() {            
             var view_name=document.getElementById("view_name");
                     if(xmlHttp.responseText==0){
                     view_name.style.color='green';
                    view_name.innerHTML='该用户名可以正常使用';
                     }else if(xmlHttp.responseText==1){
                    view_name.style.color='red';
                       view_name.innerHTML='该用户名已经被使用';
                           }else{
                         view_name.style.color='red';
                         view_name.innerHTML='该用户名含有非法字符!';
                         }
                     }
     
    </script>
    <body>
    <h1><input name="username" type="text" maxlength="20" />
    <input id="chk-name-btn" type="button" value="检测帐号" onclick="testName();" />
    <div id="view_name"></div>
    </h1>
    </body>
    </html>
    这是action
    package app;import java.io.PrintWriter;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;public class AjaxAction extends Action {
    public ActionForward execute(ActionMapping mapping,
                ActionForm form,
                HttpServletRequest request,
                HttpServletResponse response)
    throws Exception {
    PrintWriter out = response.getWriter();
    out.print(1);//ajax取得都是字符的输出。如果数据量大的话,还可以用xml来发送和接受
    return null;
    }
    }
    我的struts-config
    <action type="app.AjaxAction" 
       
        validate="false" 
        scope="request" 
        path="/ajax">
       
       </action>
      

  2.   

    为什么提示Servlet action is currently unavailable
    我把url改成url=../ajax.do也没有用啊!换成   工程名/ajax.do也没有用啊
    我的jsp文件放在一个文件夹下的!
    不知道为什么
      

  3.   

    用dwr就可以搞定了!这要什么例子啊,你是学习还是做项目啊!
      

  4.   

    用eclipse的调试功能调试,看看是action的问题,还是路径问题。
      

  5.   

    搞定了!原来是那个struts-config文件的格式有问题!
      

  6.   

    太谢谢你了,一直想找个Struts和Ajax的例子!