当前位置: 代码迷 >> Ajax >> ajax+struts2解决思路
  详细解决方案

ajax+struts2解决思路

热度:401   发布时间:2013-11-02 19:41:10.0
ajax+struts2
做级联查询   
当select改变值时 使用ajax的change  调用后台的action 返回一个json格式的数据 然后把该数据取出来  显示在页面的另一个下拉框中   页面代码 如下:
	接收部门:<select name="dept" style="width:100px" id="dept">
<s:iterator id="list" var="list" value="list">
<option value="<s:property value='id'/>"><s:property value="name"/></option></s:iterator>
</select>
 &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
接收人员:<select name="opeUserCode" id="opeUserCode">

</select> 

ajax代码如下:
 $("#dept").change(
function() {
$.ajax({
type : "post",//使用get方法访问后台
dataType : "json",//返回text格式的数据
url : "hlb_getDeptUser.action",//要访问的后台地址
data : "dept="+ $("#dept").val(),//要发送的数据
async : true,
/*complete : function(data) { },*/
success : function(data) { //msg为返回的数据,在这里做数据绑定
var userId;
var userName;
$(data,function(i) {
var sj = data[i];
userId = sj[0];
userName = sj[1];

$("#opeUserCode").append(
"<option value='"+userId+"'>"+userName+"</option>"
);
});
}
});
});

后台代码如下:
Connection conn = ConnectionManager.getDssConn();
DBManager dbManager = new DBManager(conn);
ResultSet rs = null;
String sql = "";
List list = new ArrayList();
try {

sql = "select dept_id,dept_name from env_t_department where zt=1";
rs = dbManager.sqlSelect(sql);
while(rs.next()){
DeptObject obj = new DeptObject();
obj.setId(rs.getString("dept_id"));
obj.setName(rs.getString("dept_name"));
list.add(obj);
}

} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionManager.closeConn(conn);
}
response.setCharacterEncoding("utf-8");
try {
response.getWriter().write(JsonUtil.list2json(list));
} catch (IOException e) {
e.printStackTrace();
}

JsonUtil.list2json是已经封装的转换格式的方法.
在 success : function(data) { //msg为返回的数据,在这里做数据绑定
var userId;
var userName;
$(data,function(i) {
var sj = data[i];
userId = sj[0];
userName = sj[1];

$("#opeUserCode").append(
"<option value='"+userId+"'>"+userName+"</option>"
);
});中  有进入success,但是不能往下执行  求帮忙
Ajax Struts

------解决方案--------------------
有报错没有,信息在哪里
------解决方案--------------------
如果没有报错的信息,而又使用了struts的json返回,估计就是因为内部深度序列问题,不能完成序列操作,你可以使用struts的json-plugin工具类,序列对象为字符串,再response到页面,然后在页面使用eval方法把字符串转成json对象
------解决方案--------------------
你看下你的struts的配置文件是否返回json,action是否返回json
  相关解决方案