Struts2+ajax+json返回数据问题
如题:ajax将发送的数据封装成json,发送到后台action处理后,前台获取的数据是什么?为什么能写json.ok(json.ok是本题特有),以下省略web.xml...
如题:ajax将发送的数据封装成json,发送到后台action处理后,前台获取的数据是什么?为什么能写json.ok (json.ok是本题特有),以下省略web.xml文件--->我的问题在前台页面那部分
问题:1.action返回值只是一个字符串"success"啊,这里的json的值是哪里来的?
2.ok是Demo类中的一个属性,json.ok这是怎么获取的?返回的json到底是封装了什么?
---------------------------action-------------------------------------------------------------
public class Demo extends ActionSupport{
public String execute() throws Exception {
................
................
ok = xxx.xxx();
return "success";
}
}
-------------------------------------struts2.xml----------------------------------------------
<struts>
<package name="jsonManager" extends="json-default">
<!-- 返回结果类型为 json -->
<action name="userJson" class="com.struts2.action.Demo">
<result name = "success" type="json"/>
</action>
</package>
</struts>
--------------------------------前台页面----------------------------------------
$.ajax({
url:....
..................
...................
success:function(json){
ajax[0] = json.ok;
/* 问题:1.action返回值只是一个字符串"success"啊,这里的json的值是哪里来的?
2.ok是Demo类中的一个属性,json.ok这是怎么获取的?返回的json到底是封装了什么?
*/
.....................
.....................
}
}) 展开
问题:1.action返回值只是一个字符串"success"啊,这里的json的值是哪里来的?
2.ok是Demo类中的一个属性,json.ok这是怎么获取的?返回的json到底是封装了什么?
---------------------------action-------------------------------------------------------------
public class Demo extends ActionSupport{
public String execute() throws Exception {
................
................
ok = xxx.xxx();
return "success";
}
}
-------------------------------------struts2.xml----------------------------------------------
<struts>
<package name="jsonManager" extends="json-default">
<!-- 返回结果类型为 json -->
<action name="userJson" class="com.struts2.action.Demo">
<result name = "success" type="json"/>
</action>
</package>
</struts>
--------------------------------前台页面----------------------------------------
$.ajax({
url:....
..................
...................
success:function(json){
ajax[0] = json.ok;
/* 问题:1.action返回值只是一个字符串"success"啊,这里的json的值是哪里来的?
2.ok是Demo类中的一个属性,json.ok这是怎么获取的?返回的json到底是封装了什么?
*/
.....................
.....................
}
}) 展开
1个回答
展开全部
json的值获取的不是你return的值, 由于你的xml配置里没有限制获取那些属性,所以 把你Demo类里的所有属性都传过去了 你也可以像这样限制要传的属性
<result name="success" type="json">
<param name="includeProperties">
<!--这里写要传的属性,用逗号隔开-->
</param>
</result>
追问
很感谢!豁然开朗了,你说的要限制的属性书写格式怎么写? 比如有name,age,address三个属性,需要name,age不需要address怎么写?
还有一事不太明白,既然能获得类的全部属性,为什么要限制获取属性?获取全部属性不是更爽么,想用哪个属性可以直接访问
追答
上面写的就是限制的,其实就是指定 哪些属性封装到json里面,如果只要name,age不要address前提是这几个都是这个类的属性
<result name="success" type="json">
<param name="includeProperties">
name,age<!-- 如果是某个对象的某个属性就写 xx\.name,xx\.age xx表示对象 \表示转义-->
</param>
</result>
不全部传是为了保护信息,
全都传过去了,很容易被有心人看到一些不该看到的, 比如 你的属性 里有一个对象,那么这个对象 对应的所有信息都会被封装到json里面去, 用户直接网页调试都可以看到json里面的所有内容, 如果有个容器,咳咳,就全都被别人知道了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询