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到底是封装了什么?

*/
.....................

.....................

}

})
展开
 我来答
fly撒旦法时代
2014-08-04
知道答主
回答量:15
采纳率:0%
帮助的人:12.6万
展开全部

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里面的所有内容, 如果有个容器,咳咳,就全都被别人知道了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式