通过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>