项目____SSH框架下Ajax数据通信过程中数据读取不到的问题

前端之家收集整理的这篇文章主要介绍了项目____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获取

原文链接:https://www.f2er.com/ajax/162937.html

猜你在找的Ajax相关文章