加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:54:49 所属栏目:百科 来源:网络整理
导读:这里想实现的功能大概是这样:类似注册时,用户名已经被注册了的情况。当用户失去焦点的时候利用AJAX发送请求到服务器端,服务器端进行数据库查询,如果有相同的用户名则页面提示用户名已被注册了,不能用,否则就通过注册。 这里用的是Jquery AJAX以及SSH框

这里想实现的功能大概是这样:类似注册时,用户名已经被注册了的情况。当用户失去焦点的时候利用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、测试,输入数据库里已经存在的用户名,页面提示用户名已存在,不用注册

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读