以下是java代码 :AjaxJsonsj.java
package com.sj.json; import java.util.ArrayList; import java.util.List; import net.sf.json.JSONArray; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.Preparable; import com.sj.pojo.Memberlevel1; import com.sj.service.MemberLevelService; @SuppressWarnings({"serial","unchecked"}) public class AjaxJsonsj extends ActionSupport implements Preparable{ private MemberLevelService memberLevelService; // 采用spring注入的service private JSONArray result; // 返回的结果传到前台去 //清除显示多重显示方法 public void prepare() throws Exception { clearErrorsAndMessages(); } /** * action默认的方法被调用 * @author su_jian */ public String execute(){ try { List list= memberLevelService.browseMemberLevel2(); // list是具有”键值对“的list 和map类似一个,两个属性 List listsj = new ArrayList(); JSONArray jsonArray = new JSONArray(); //json的数组 Memberlevel1 Memberlevel2 =new Memberlevel1(); listsj.add(Memberlevel2); for (int i = 0; i <list.size() ; i++) { Memberlevel1 memberlevel1 =new Memberlevel1(); Object[] obj = (Object[]) list.get(i); memberlevel1.setIdsj(obj[0]!=null?Integer.valueOf(obj[0].toString()):0); memberlevel1.setLevelName(obj[1]!=null?obj[1].toString():""); listsj.add(memberlevel1); } //讲list 属性从object 转换成 属性 jsonArray = JSONArray.fromObject(listsj); //把list方法换成json 对象 this.result = jsonArray; //付给返回去的值 System.out.println(this.result); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } //以下 是set get 方法 public MemberLevelService getMemberLevelService() { return memberLevelService; } public void setMemberLevelService(MemberLevelService memberLevelService) { this.memberLevelService = memberLevelService; } public JSONArray getResult() { return result; } public void setResult(JSONArray result) { this.result = result; } }
ajax js 代码如下:
// 返回函数的数据集采用ajax json struts2 function showesay(dataResponse) { var data = eval('(' + dataResponse.responseText + ')'); for(var i=0;i<data.length;i++){ var op= document.createElement("option"); var xl = document.getElementById('xl'); op.text = data[i].levelName; op.value = data[i].idsj; xl.add(op); } selectMem(); } // 返回去的时候重新选择刚才选择的 function selectMem(){ with(document.forms(0)){ var len = xl.options.length; for(var i=0; i<len; i++){ if(xl.options[i].text==levelNamesj.value){ xl.options[i].selected = true; } } } } //获取简单的json数据 function getjson() { var url = 'ajax/ajaxJsonsj.action'; var pars = ''; var ajax = new Ajax.Request(url, { method :'post', parameters :pars, onComplete :showesay }); }
struts2 配置文件 struts.xml 如下:
<!-- ajax json 配置 --> <package name="ajax" extends="json-default" namespace="/admin"> <action name="ajaxJsonsj" class="ajaxJsonsj"> <result type="json"> <param name="root">result</param> </result> </action> </package>
jsp 页面代码
<tr class="tr"> <th class="center">会员级别</th> <td colspan="3"> <SELECT id="xl" name="xl" > </SELECT> </td> </tr>
如愿的现实下拉列表