首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts2使用json格式的有关问题,返回格式总是不对

2012-03-28 
struts2使用json格式的问题,返回格式总是不对业务描述:用户管理:添加新用户时判断该用户名是否已经存在,技

struts2使用json格式的问题,返回格式总是不对
业务描述:用户管理:添加新用户时判断该用户名是否已经存在,
技术支持:框架:struts2,spring2.5,Ibatis2
实现功能:判断用户是否存在,使用ajax提交,返回json格式数据,jsp页面提取json数据并显示
代码描述:
jsp:页面如下:

Java code
<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]

  <td><div class="Validform_checktip">帐号至少6个字符,最多18个字符</div></td>
</tr>[/code]

响应请求的js代码如下:
Java code
$(".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);            }        }    });


这是在网上找的例子,jquery实现的,其中的jquery的验证js如下,直截取了对本次有用 的代码:
Java code
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});                                }                        });


返回json格式,有个datatype配置,网上下来的是text格式,不知道改了json是什么意思,但是我改了json后,js提交出错

其中的ajaxurl就是要提交的请求路径。

action代码如下:
Java code
 

/** * 检查该用户名是否可用 * @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()); } }


流程如下:添加用户时ajax提交到action查询该用户是否存在,不存在可以添加,否则提示已存在不能添加,并显示提示信息
使用jquery,返回json格式数据,

但是我在写的时候,业务对了,但是总是得不到json格式的数据,在jsp页面总是显示如下

“[{"status":"n","info":"该用户名已存在,请重新输入!"}]”
按说应该只显示该用户名已存在的,但是现在总是显示这个格式。而且当用户名不存在时,还是不能提交,form表单无法提交,sratus 就是指验证的ajaxurl提交状态,y表示成功,n表示失败,原文是这么说的
“header("Content-Type:text/html; charset=utf-8");
//sleep(3);
//表单数据是以POST方式提交过来;

//注意json数据必须严格按如下格式输出:{"info":"demo info","status":"y"};
//info: 输出提示信息;
//status: 返回提交数据的状态,是否提交成功。“y”表示提交成功,“n”表示提交失败,在callback函数里可以根据该值执行相应的回调操作;
echo '{
"info":"数据已成功提交!",
"status":"y"
}';”



现在的问题是:如何用struts2返回json格式,而且使用了jquery,请大家帮我看看我的问题哪里不对,需要看什么代码,再和我说,我觉得能出问题的代码我都贴出来了, 希望大家帮帮我,好认真的发这个贴。

[解决办法]
“[{"status":"n","info":"该用户名已存在,请重新输入!"}]”
===============================================================
你这叫json字符串,必须转换成json对象
[解决办法]
eval("("+json+")")是这样用~~~
[解决办法]
汗现在的新人都是这样,问题还没解决先闪人了。
[解决办法]
eval("("+json+")")是这样用~~~

热点排行