xiaoliang330 发表于 2013-1-23 01:32:33

ajax小试牛刀第2回

这次遇到问题,问题阐述如下:

想通过ajax的异步传输,在用户注册页面,当用户输入用户名后显示该用户的可用与否,此处用到struts2,ajax的request对象把url转向action,通过action与数据库交互,判断用户名是否可用。
遇到了action中如何返回需要的提示信息的问题,我是这样解决的,通过建立相应的jsp页面来显示提示内容,代码贴上,口述看者模糊。


jsp页面
   <script language="javascript">    var http_request = false;    function t1(){    var userName = document.all("um.userName").value;    //alert(userName);      //ajax开始-----------------------------    //1:创建对象    myRequest = new ActiveXObject("Microsoft.XMLHTTP");    //2:给该对象注册事件,当对象的状态改变时,调用后面的回调方法    //alert(myRequest.readyState);    myRequest.onreadystatechange = t2;    //3:设置请求方式、目标url以及是否异步交互,其中true表示异步    myRequest.open("GET","/s2/user/myAction?uwm.submitFlag=toAdd&um.userName="+userName,true);    //4:      myRequest.send(null);    }      function t2(){    //alert(myRequest.readyState);    if(myRequest.readyState==4){    //如果交互完成    //alert(myRequest.status);    if(myRequest.status==200){    //并且交互成功    //取得服务端返回的信息    var retVal = myRequest.responseText;    //ajax结束-----------------------------    //alert(retVal);    //后续处理    document.all("myspan").innerHTML=retVal;    }    }    }</script><body><form name="add" action="/s2/user/myAction.action?uwm.submitFlag=add" method="post"><table align="center"><tr><td colspan="2"><font size="+1" color="#ff00ss">添加用户</font></td></tr><tr><td>用户姓名:</td><td><input type="text" name="um.userName" /><font color="red">*<span id="myspan"></span></font></td></tr>


action中的代码如下:
public String execute() throws Exception {String submitFlag = uwm.getSubmitFlag();//System.out.println(submitFlag);if(submitFlag!=null){                     if("toAdd".equals(submitFlag)){return toAdd();}}private String toAdd() throws IOException {String userName = um.getUserName();qum.setUserName(userName);Collection col = UserServiceFactory.getUserService().getUserByCondition(qum);if(col.size()==0){return "yes";}else{return "no";}}



struts.xml
<result name="yes">/pages/yes.jsp</result> <result name="no">/pages/no.jsp</result>
相应两个跳转的页面的内容:
恭喜,此用户名可用!//yes.jspsorry,此用户名已存在,请重新输入!//no.jsp


此处用jsp页面装载提示信息个人觉得不是解决的好办法,学的不够深入,在Servlet中,是不存在这种情况的,直接用PrintWriter 输出相应的提示信息,通过jsp页面的 request.responseText即可获取到相应的提示。
页: [1]
查看完整版本: ajax小试牛刀第2回