码迷,mamicode.com
首页 > Web开发 > 详细

AJAX向服务器发送请求并返回json数据

时间:2015-07-31 18:42:24      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:jquery   struts   ajax   json   

    这里想实现的功能大概是这样:类似注册时,用户名已经被注册了的情况。当用户失去焦点的时候利用AJAX发送请求到服务器端,服务器端进行数据库查询,如果有相同的用户名则页面提示用户名已被注册了,不能用,否则就通过注册。

    这里用的是Jquery AJAX以及SSH框架,下面是我的实现步骤:

先引入struts-json的jar包

1、注册页面中添加JS方法调用

<span id="tip" style="color:red"></span>
	<s:form action="Register">
		<s:textfield id="username" name="username" label="用户名" onblur="validatename()"/>
		<s:password name="password" label="密码" />
		<s:submit value="注册" />
	</s:form>
jquery方法如下:其中url为请求的地址,type为http请求方法,data为发送到服务器的参数,dataType为返回的数据类型,success为请求成功后的回调函数,如果要设置无论请求是否成功都回调可以设为complete

<script language="JavaScript">
function validatename(){
	var user="username="+$('#username').val();
	$.ajax({
		url:"ValidateName.action",
		type:'post',
		data:user,
		dataType:'text',
		success:processResponse
	});
}
function processResponse(msg){
	var data = eval("("+ msg+")");
	$("#tip").html(data.tip);
}
</script>

在此说一下,这里的dataType返回类型为text,回调函数中才可用eval解析这个json数据,用dataType:‘json‘的话返回的是一个对象,用eval会报js错误


2、接下来编写action类

private String username;
	private String password;
	private String tip;
	private LoginService ls;

	public String execute() {
		try {
			if (ls.validateName(getUsername())) {
				setTip("你输入的用户名" + getUsername() + "已被注册!");
			} else {
				setTip("你的用户名" + getUsername() + "可用!");
			}
		} catch (Exception e) {
			setTip(e.getMessage());
		}
		return SUCCESS;
	}


3、持久层LoginDaoImpl类中添加一个验证用户名的方法,其他的跟之前的博客写的改改

public boolean validateName(String name){
		try {
			List list=(List) getHibernateTemplate().find("from Login a where a.username = ?", name);
			if(list!=null && list.size()>0){
				return true;
			}else{
				return false;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
这里要特别说明一下,from后面的Login是我们的实体类,并不是表名字,我一开始写的是login(表名字),调试中发现当执行到这一句是说tomcat报login没有映射的错误

4、配置文件在此就不多说了,关键说下struts配置,需要继承json-default包,做点小改动,改为:

extends="json-default,struts-default"
<action name="ValidateName" class="validateNameAction">
			<result type="json"></result>
		</action>
result类型设为json


5、测试,输入数据库里已经存在的用户名,页面提示用户名已存在,不用注册

技术分享



版权声明:本文为博主原创文章,未经博主允许不得转载。

AJAX向服务器发送请求并返回json数据

标签:jquery   struts   ajax   json   

原文地址:http://blog.csdn.net/kevinxxw/article/details/47171033

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!