项目____SSH框架下Ajax数据通信过程中数据读取不到的问题
—————————————————————————————————————————— action代码: public String getOgcConfigById(){ CData ogc = this.ddsManage.getOgcConfigById(data); try { Struts2Utils.getResponse().getWriter().println(JSONArray.fromObject(ogc)); } catch (IOException e) { e.printStackTrace(); } return null; } 这段代码是纠正过的,原本是下面这句,以为只查询了一个结果用CData接收 可以像数字或者字符一样直接当参数传入。 Struts2Utils.getResponse().getWriter().println(ogc);但是经过这句代码后在前端界面无法读取数据。 究其原因是没有弄明白这条代码的根本面目,以及JSONArray.fromObject()的根本作用。 jsp页面代码: function Edit(id){ var id=id; $.ajax({ url:'<c:url value="/basicInfor/ddsManage/dds!getOgcConfigById.action"/>',type:"POST",async: false,dataType : "json",data : 'id='+id,success:function(data) { //使用struts2框架下的ajax传回数据 将CData类型转成了JSONArray 所以data只有一条数据也要选择第一个:data[0] $("#uid").val(data[0].id); $("#ukey").val(data[0].config_key); $("#uregion").val(data[0].region); $("#uusable").val(data[0].usable); } }) $('#myModal3').modal("show"); }这段代码也是纠正过的,原本代码是data.id没有选取元素。因为当时以为像传入数值类型一样 可以直接调用。而如果转化成了JSONArray类型 无论传入多少个值必须选择某个元素后再利用keyvalue取值。 —————————————————————————————————————————— tip: 举例:jsp利用表格提交id="abc"字段,在action中利用data.get("abc")获取值,为空!在mapper.xml中直接使用#{abc}可以获得该值。
因为:一个是存储到request范围的值。项目中的data是package ssdevframework.front.action;包中的abstract class BaseActionSupport内声明的CData类型变量。data会读取request范围内相应key的值。而在action中要想读取对应id的值,则需要先声明private修饰的同名变量,获取到request中对应的值,然后存储到data对应的key中。才能通过data获取。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 国嵌视频学习之UBOOT命令
- postgresql – 使用n:m和1:m关联的Sequelize delete实例并
- ruby-on-rails – 设计 – 登录子域名
- Cannot forward ... response ... committed
- LTE-TDD随机接入过程(1)-目的和分类
- TDD并不是看上去的那么美
- Swift语言中与C-C++和Java不同的语法(四)
- objective-c – 如何不使用dequeueReusableCellWithIdentif
- Ruby或其他语言在Parrot上运行得更快吗?
- ruby-on-rails – 如何在Rails 3中使用Mongoid嵌入式资源创