SSH(Struts2、spring、Hibernate)中AJAX如何返回数据,是Struts2的action?

现在有一个注册页面,注册用户的,希望在用户填写完用户名之后就去服务器查询存不存在此用户,然后返回一个标识符,然后在javascript中根据标识符判断,例如:返回0/或1。0代表不存在,那么提示用户可以注册,1表示存在,提示用户不能注册,更换用户名。但是我的请求提交到action,而action返回的只能是逻辑地址,如:SUCCESS、INPUT或者自定义的。我在action调用业务逻辑层的方法查询以后如何返回结果到javascript?

实现ServletRequestAware,ServletResponseAware这两个接口,可方便的在action中得到request和response对象,而response对象可以处理ajax请求的返回,在具体的action方法中return null 即可。
例子:
public class SimpleAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{
private HttpServletResponse response;
protected HttpServletRequest request;
// ajax 请求到这个方法
public String ajaxAction(){
response(“哈哈!”);
return null;
}
private void response(Object obj) {
response.setContentType("html/text;charset=utf-8")
try {
response.getWriter().print(obj);
} catch (IOException e) {
e.printStackTrace();
}
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-07
我的是用了客户端异步 <script type="text/javascript" src="../js/jquery-1.4.min.js"></script>
<script type="text/javascript" src="../js/jquery.validate.js"></script>
调用这两个jquery的ajax
$(function(){
$("#f").validate({
rules:{
"user.email":{required:true,email:true,remote:"vali.action"},
"user.nickname":{required:true,rangelength:[4,20]},
"user.password":{required:true,minlength:6},
"password1":{required:true,equalTo:"#txtPassword"}
<!-- ,"number":{required:true,equalTo:"#input"} -->
},

messages:{
"user.email":{required:"email不能为空",email:"email格式不正确",remote:"邮箱已经注册了"},
"user.nickname":{required:"用户名不能为空!",rangelength:jQuery.format("用户名位数必须在4到20字符之间!")},
"user.password":{required:"密码不能为空",minlength:jQuery.format("密码位数必须大于6")},
"password1":{required:"确认密码不能为空",equalTo:"确认密码和密码不一致"},
"number":{required:"验证码不能为空",equalTo:"验证码不正确"}
},

当鼠标离开remote:"vali.action"就调用这个action本回答被提问者采纳
第2个回答  2011-12-06
strtus2中有个package是json,里面有一个result叫json.你可以查一下
第3个回答  2011-12-05
楼主可以去学习一下ajax,异步更新,页面不跳转,局部更新,可以将表单提交到servlet或jsp页面返回一个值判断,要有源代码的话可以呼我,我有例子,分我要定了!追问

第一、在struts2中的action返回的是逻辑地址,无法返回一个值。如果是servlet的话,好说,现在是,ssh框架中struts2,struts2返回逻辑地址,然后在action中根据逻辑地址找到物理地址.所以无法返回一个值。
第二、ajax学了.没想出来解决的办法.

追答

思维不要死了,用了ssh就一定不用servlet和jsp了么?
给你建议:在struts2的action中获得HttpServletResponse,用response获得out然后输出你要的值,至于返回的是逻辑地址,你可以返回一个null不就行了?
企业开发中一般情况下我们将ajax放在servlet中或者jsp中放在action中也行,只是不怎么方便,你联系我,我把源码给你

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网