1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 关于jQuery获取Action返回的JSON数据 项目真实案例 记录(Struts2)

关于jQuery获取Action返回的JSON数据 项目真实案例 记录(Struts2)

时间:2020-10-15 09:36:01

相关推荐

关于jQuery获取Action返回的JSON数据 项目真实案例 记录(Struts2)

这里列出 页面代码 和 Action类相关代码 供参考:

页面代码(jQuery ajax异步请求获取数据):

//保存决策信息 function saveDecision() { var rowid = checkSelected(); var rowData = jQuery("#list").jqGrid('getRowData', rowid); var processIsRight = rowData["processIsRight"]; if(rowid==-1){ alert("只能选择一个推荐方案");return; } else if(processIsRight==0){//检查流程是否存在问题 alert("该流程方案下有任务无岗位默认人,请仔细检查该流程方案");return; } //判断是否选择了决策人:必选 var _decisionMaker = $("#businessModule").find("option:selected").val(); if(_decisionMaker=='' || _decisionMaker == "undefined") { alert("请选择一个决策人!"); return;} else if(rowid>0){ var url = "saveDecision.action?" + getParams(); //document.write(url); alert(url); /***/ $.ajax({ url : url, type : 'POST', dataType : 'json', success : function(json) { //reference: /jpr1990/article/details/6931027 alert(json); window.close(); }, error : function() { alert('数据加载失败,请重试..'); //window.close(); } }); }else{ alert("请选择一个推荐方案");return; } }

后台Action类相关代码(主要是看怎样返回JSON数据):

/** * 保存决策信息 * 0 - 未启动. 1 - 暂停. 2- 运行中. 3 - 失败. 4 - 终止. 5 - 完成. 6 - 已删除. */ public String save() { if (assistDecision != null) { try { // 生成实际决策时间 Timestamp decision_date = new Timestamp(System.currentTimeMillis());// 不能大于强制决策时间,还没有做判断 assistDecision.setDecisionMaker(assistDecision.getDecisionMaker()); assistDecision.setDecisionTime(decision_date); //判断是否自动启动流程 if(this.getIsStartProcess().equals("true")){ assistDecision.setSolutionState(2);// 设置SolutionState 为:2-运行中 this.decisionExecutorService.saveAssistDecision(assistDecision,true,processId,emgencyInfoProcessId); }else{ assistDecision.setSolutionState(0);// 设置SolutionState 为:0-未启动 this.decisionExecutorService.saveAssistDecision(assistDecision,false,processId,emgencyInfoProcessId); } jsonMassage = "决策成功,数据已保存!"; } catch (Exception e) { e.printStackTrace(); jsonMassage = "该流程方案下有任务无岗位默认人,请仔细检查该流程方案"; System.out.println(jsonMassage); return SUCCESS; } } return SUCCESS; }

直接打印System.out.println(jsonMassage);然后return SUCCESS;即可将jsonMassage数据返回到页面的success方法中:

success : function(json) { //reference: /jpr1990/article/details/6931027 alert(json); window.close(); }, error : function() { alert('数据加载失败,请重试..'); //window.close(); }

为什么Action中的save方法知道返回什么数据到客户端呢? 这是由Action的配置文件配置决定的:<param name="root">jsonMassage</param>,这里设置了方法save返回的是jsonMessage(属性/对象)。至于jsonMessage是什么数据类型,这里并不关心,返回是自动会查到他的数据类型,并以相应的数据格式返回到客户端-页面。

<action name="saveEvent" class="eventAction" method="saveEvent"> <result name="success" type="json"> <param name="includeProperties">result </param> </result> </action> <action name="saveDecision" class="decisionExecutorAction" method="save"> <result name="success" type="json"> <param name="root">jsonMassage</param> </result> </action>

=========================题外话==============================

<action name="saveEvent" class="eventAction" method="saveEvent"> <result name="success" type="json"> <param name="includeProperties">result </param> </result> </action> <action name="saveDecision" class="decisionExecutorAction" method="save"> <result name="success" type="json"> <param name="root">jsonMassage</param> </result> </action>

这2个Action配置有什么不同呢?大家看出来了吗?对,返回的参数方式不一样

那么<param name="includeProperties">result </param>和<param name="root">jsonMassage</param>有什么不一样吗?大家查查吧...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。