struts2使用json格式的问题,返回格式总是不对
业务描述:用户管理:添加新用户时判断该用户名是否已经存在,
技术支持:框架:struts2,spring2.5,Ibatis2
实现功能:判断用户是否存在,使用ajax提交,返回json格式数据,jsp页面提取json数据并显示
代码描述:
jsp:页面如下:
<tr> <td width="20%" align="right"> 帐号: </td> <td style="width:205px;"> <input type="text" value="" name="users.loginName" class="inputcss" datatype="s6-18" ajaxurl="<%=basePath %>login/checkUserExist.action" nullmsg="请输入用户名!" errormsg="帐号至少6个字符,最多18个字符,只能是数字字母下划线!" /> </td>[code=Java]
$(".addUserform:eq(0)").Validform({ tiptype:2, ajaxPost:true, callback:function(s){ //返回数据data是json格式,{"info":"demo info","status":"y"} //info: 输出提示信息; //status: 返回提交数据的状态,是否提交成功。如可以用"y"表示提交成功,"n"表示提交失败,在ajax_post.php文件返回数据里自定字符,主要用在callback函数里根据该值执行相应的回调操作; //你也可以在ajax_post.php文件返回更多信息在这里获取,进行相应操作; //这里执行回调操作; var data = eval(s); if(data.status=="y"){ setTimeout(function(){ $.Hidemsg(); //公用方法关闭信息提示框; },2000); } } });
if($(this).attr("ajaxurl")){ var inputobj=$(this); inputobj.attr("valid",tipmsg.c); $.fn.Validform.sn.showmsg(tipmsg.c,settings.tiptype,{obj:inputobj,type:1,sweep:settings.tipSweep},"hide"); $.ajax({ type: "POST", url: inputobj.attr("ajaxurl"), data: "param="+$(this).val()+"&name="+$(this).attr("name"), dataType: "text", success: function(s){ if(s=="y"){ inputobj.attr("valid","true"); errorobj=null; $.fn.Validform.sn.showmsg(tipmsg.r,settings.tiptype,{obj:inputobj,type:2,sweep:settings.tipSweep},"hide"); }else{ inputobj.attr("valid",s); errorobj=inputobj; $.fn.Validform.sn.showmsg(s,settings.tiptype,{obj:inputobj,sweep:settings.tipSweep}); } }, error: function(){ inputobj.attr("valid",tipmsg.err); errorobj=inputobj; $.fn.Validform.sn.showmsg(tipmsg.err,settings.tiptype,{obj:inputobj,sweep:settings.tipSweep}); } });
/** * 检查该用户名是否可用 * @return * @throws IOException */ public void checkUserExist() throws Exception{ String param = request.getParameter("param");// System.out.println("传入的参数值为:"+param); users = new Users(); users.setLoginName(param); //查询该用户名 int c = userService.checkUserHasExist(users); System.out.println(c); if(c!=0){ JSONArray jsonObj = JSONArray.fromObject("[{info:'该用户名已存在,请重新输入!',status:'n'}]"); writeJson(jsonObj.toString()); }else{ JSONArray jsonObj = JSONArray.fromObject("[{info:'该用户名可以使用!',status:'y'}]"); writeJson(jsonObj.toString()); } }