上班的时候遇到了这类问题,百思不得其解,但最后还是被我征服了,拿来与大家分享:
哎哟,不错哦!搞懂下面的代码就够了
struts.xml核心文件中的写法为:
<package name="default" namespace="/" extends="json-default">
<action name="myTest" class="cn.com.gjw.MyTest" method="test">
<result type="json">
<param name="root">str</param><!-- 注意str,它是干什么的呢? -->
</result>
</action>
</package>
action(即MyTest类)中的写法为:
package cn.com.gjw;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
public class MyTest {
private String str; //str是不是在哪里出现过呢??对,就是struts.xml中
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public String test() {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map = new HashMap<String, String>();
map.put("name","人事部");
map.put("weight","100");
list.add(map);
map = new HashMap<String, String>();
map.put("name","策划部");
map.put("weight","50");
list.add(map);
map = new HashMap<String, String>();
map.put("name","外联部");
map.put("weight","80");
list.add(map);
map = new HashMap<String, String>();
map.put("name","主席团");
map.put("weight","120");
list.add(map);
map = new HashMap<String, String>();
map.put("name","组织部");
map.put("weight","200");
list.add(map);
map = new HashMap<String, String>();
map.put("name","宣传部");
map.put("weight","100");
list.add(map);
str = JSONObject.toJSON(list).toString();
return "success";
}
}
前端页面使用jquery的ajax方法接收数据,其中data就是从后台传过来的json格式的字符串,注意:data不用提前定义。代码为:
$.ajax({
url:"myTest.action",
type:"get",
dataType:"json",
error:function(e) {
alert("失败");
},
success:function(data) {
//alert("成功:"+data);
//将json格式的字符串转为原来的格式
var json = $.parseJSON(data);
var name = new Array();
var weight = new Array();
for(var i = 0; i < json.length; i++) {
name.push(json[i].name);
weight.push(json[i].weight);
}
test(name, weight);//下面定义一个test()方法就可以使用这两个数组了。
}
});