日期:2014-05-16 浏览次数:20358 次
通过ajax更换div的样式,可能失败的原因:
1、ajax中的cache: false是必须的;
2、查看url是否正确,通过浏览器直接方法url看看是否执行;
3、查看是否有拦截器之类程序,就此拦截(这个很隐蔽,尤其是你都系统不是很熟悉)
4、ajax传递的参数没有传到后台,可能在action中,属性没有设置set方法,还有就是属性的名字不对(-_-!)如:属性名字是uName,那么自动生成的set方法为:setuName,这样action是获取不到这个属性的,改成setUName就ok了,所以命名很重要,否则带来N多麻烦;
5、将mapBean属性的getter方式上设置annotation,如下:
@JSON(serialize = false) public MapBean getMapBean() { return mapBean; }
?
前台页面部分代码:
$.ajax({ url :'/test/showJson.action', //后台处理程序 type:'post', //数据发送方式 cache: false, //是否缓存 dataType:'json', //接受数据格式 data:"sid="+sid, //要传递的数据(参数) success:_change //回传函数(这里是函数名) }); function _change (json) { $("#sDIV").removeClass(); $("#pre").removeClass(); $("#she").removeClass(); $("#sDIV").attr("style",json.sMap.style); $("#pre").attr("style",json.preMap.style); $("#she").attr("style",json.sheMap.style); $("#sDIV").attr("id",json.sMap.id); $("#pre").attr("id",json.preMap.id); $("#she").attr("id",json.sheMap.id); }
?
后台struts2(action及配置文件)部分代码:
加入2个包struts2-json-plugin-2.2.1.jar、json-lib-2.1-jdk15.jar
public String ajaxShowJson() { try { mapBean = testService.getTest(sId); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } <package name="test_Json" extends="json-default"> <action name="showJson" class="testAction" method="ajaxShowJson"> <result name="success" type="json"> <param name="root">mapBean</param> </result> </action> </package>?
?