SSH(Struts2、spring、Hibernate)中AJAX如何返回数据,是Struts2的action?
现在有一个注册页面,注册用户的,希望在用户填写完用户名之后就去服务器查询存不存在此用户,然后返回一个标识符,然后在javascript中根据标识符判断,例如:返回0/或1...
现在有一个注册页面,注册用户的,希望在用户填写完用户名之后就去服务器查询存不存在此用户,然后返回一个标识符,然后在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;
}
}
例子:
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;
}
}
展开全部
我的是用了客户端异步 <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
<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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strtus2中有个package是json,里面有一个result叫json.你可以查一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主可以去学习一下ajax,异步更新,页面不跳转,局部更新,可以将表单提交到servlet或jsp页面返回一个值判断,要有源代码的话可以呼我,我有例子,分我要定了!
追问
第一、在struts2中的action返回的是逻辑地址,无法返回一个值。如果是servlet的话,好说,现在是,ssh框架中struts2,struts2返回逻辑地址,然后在action中根据逻辑地址找到物理地址.所以无法返回一个值。
第二、ajax学了.没想出来解决的办法.
追答
思维不要死了,用了ssh就一定不用servlet和jsp了么?
给你建议:在struts2的action中获得HttpServletResponse,用response获得out然后输出你要的值,至于返回的是逻辑地址,你可以返回一个null不就行了?
企业开发中一般情况下我们将ajax放在servlet中或者jsp中放在action中也行,只是不怎么方便,你联系我,我把源码给你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询