ajax与struts如何结合?

请大家指点一下······
谢谢!

楼主,这个很容易。
我不用任何AJAX框架给你一个例子,比如选了一个组织,需要连动得到该组织的用户:
这里是个JSP页面,中间的代码省略了,
[code="java"]
html:html
……
/html:select
……
/html:html

; queryUsers(); //查询用户 function queryUsers(){ //定义了一个函数,用来查询某机构下的用户 if(!objRequest){ ajaxInit(); } var act="userAction.do"; //这里就是你的UserAction实例名 var method="post"; var orgainid=document.all["organID"].value; //获取你选的机构ID //Url content var content="action=queryOrgUser&organID="+orgainid; ajaxProcessBase(act,method,content,dealOrgUser); //dealOrgUser 函数为处理函数,需要定义 } function dealOrgUser(){ //定义处理返回信息的函数 if(isAjax()){ eval(objRequest.responseText); } } //-->

[/code]

下面是 AJAX JS 部分:
[code="java"]
var objRequest;
var action = "";//请求路径
var method = "";//访问方法如get,post等
var formcontent = "";//提交的保单数据

function ajaxInit() {
try {

objRequest = new ActiveXObject("Microsoft.XMLHTTP");

} catch(e) {

try {

objRequest = new ActiveXObject("Msxml2.XMLHTTP");

} catch(ex) {

try {

objRequest = new XMLHttpRequest();

} catch(exc) {

alert("浏览器不支持Ajax,可能会导致某些功能不能使用!");

objRequest = false;

}

}

}

}

function ajaxProcessBase(act,met,content,fuctionProcess){
action=act;
method=met;
formcontent=content;
if(objRequest){
objRequest.open(method, action, true);

objRequest.onreadystatechange = fuctionProcess;
if(method == "post"){

objRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

}
formcontent = formcontent != "" ? formcontent : null;
objRequest.send(formcontent);

}

}

//判断是否请求成功
function isAjax() {
if(objRequest.readyState == 4){
if(objRequest.status == 200){

return true;

} else {

alert("Problem: "+objRequest.statusText);

}

}

return false;

}

[/code]

下面是Struts action里面的一段:
[code="java"]
String action = form.getAction();
……
if (action.equals("queryOrgUser")) { //查找一个公估组织下面的所有公估师
Collection col = manager.queryUser(form.getOrganID());
StringBuffer sb = new StringBuffer();
httpServletResponse.setContentType("text/xml;charset=GBK");
httpServletResponse.setHeader("Cache-Control", "no-cache");
java.io.PrintWriter out = httpServletResponse.getWriter();

    sb.append(" var sel= document.all['userid'] ; \r\n");
    sb.append(" sel.options.length=0; \r\n");
    java.util.Iterator it = col.iterator();
    User user= null;
    while (it.hasNext()) {
      user = (User) it.next();
      sb.append("var option=new Option('" + user.getName().trim() + "','" +
                user.getUserid() + "');\r\n");
      sb.append(" try{ \r\n");
      sb.append(" sel.add(option); \r\n");
      sb.append("}catch(e){  }   ;\r\n ");
    }
    System.out.println(sb.toString());
    out.print(sb.toString());
    out.flush();
    out.close();

    return null;
  }

……
[/code]

这个是我以前的一个从项目中摘出来的,绝对是有效的。