一个简单的ajax获取json的例子

[b]//一个简单的ajax获取json的例子[/b]

前台
<div id="ruleList"></div>向div里添加一段循环输出的数据
ajax代码

$.ajax({
type: "POST",
url: "ruleListAction.do?method=searchRuleList",
//我们用text格式接收
//dataType: "text",
//json格式接收数据
dataType: "json",
data: "ruleId="+ruleId+"&ruleGroupId="+ruleGroupId+"&prodName="+prodName,
success: function (jsonStr) {
//实例2个字符串变量来拼接下拉列表
//alert(jsonStr);
//使用jquery解析json中的数据
var ruleListTemp = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";

$.each(jsonStr, function (n, value) {
//alert(value.ruleId);
ruleListTemp += ("<tr><td>" + value.ruleName);
ruleListTemp += ("</td></tr>");
});
ruleListTemp += ("</table>");

$("#ruleList").html(ruleListTemp);
}
});

[b]要注意的是data中是js方法中获取的变量来传值给后台获取,另外jsonStr要和后台传来的变量一致[/b]

后台代码

//异步查找具体规则
public ActionForward searchRuleList(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws IOException {

response.setCharacterEncoding("utf-8");


String ruleId = request.getParameter("ruleId").trim();
String ruleGroupId = request.getParameter("ruleGroupId").trim();
String prodName = request.getParameter("prodName").trim();

try{

//根据prodName找出prodId
Tporduction porductionByName = ruleListLogic.getPorductionByName(prodName);
Trule rule = ruleListLogic.getRuleByProdIdAndRuleTypeCode(porductionByName.getProdId(), "1");

List<TruleVersion> ruleVersionList = new ArrayList<TruleVersion>();
ruleVersionList = ruleListLogic.getRuleVersionListByRuleIdAndGroupId(rule.getRuleId(), Integer.parseInt(ruleGroupId));

List<RuleListBean> ruleListTmp = new ArrayList<RuleListBean>();

RuleListBean ruleTmp=new RuleListBean();

for(int i=0;i<ruleVersionList.size();i++){
ruleTmp.setRuleId(ruleVersionList.get(i).getComp_id().getRuleId());
ruleTmp.setRuleNo(ruleVersionList.get(i).getComp_id().getRuleNo());
ruleTmp.setRuleGroupId(ruleVersionList.get(i).getRuleGroupId());
ruleTmp.setRuleName(ruleVersionList.get(i).getRuleItemName());
ruleListTmp.add(ruleTmp);
}

//JSON
JSONArray json = JSONArray.fromObject(ruleListTmp);
String jsonStr = json.toString();

response.getWriter().print(jsonStr);
response.getWriter().flush();
response.getWriter().close();
}catch (Exception e) {
e.printStackTrace();
}
return null;
}

[b]需要注意的是JSONArray.fromObject放入的实体类不能是回环调用的类,如果实体类中有联合主键这种也会有问题,建议使用一个dto来转换成json,把需要的字段放入,这样就不会报java.lang.reflect.InvocationTargetException这种的错误。[/b]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值