最近搭了一个SSM框架,但是前台页面是html,所以不能用jsp的那套标签去取数据,但是数据可以拿到,却怎么也显示不到页面上,经一个大神指点在$.ajax中加入了这样一行代码,问题完美解决。
var retData = eval("(" + data + ")");
以上代码表示将拿到的数据转换成json对象的格式,然后就可以.来获取想要的数据了。。所谓json对象的格式,就是后台返回给前台的数据是一个json字符串,我们在页面中object.name这种方式是取不到数据的,因为它是字符串,点不出方法,此时我们就要将该字符串转换成json对象,然后通过json的对象去点出属性(但是有时不加这行代码也可以取出)。其实查看数据是否为json字符串还是json对象也非常简单,将数据alert(数据)如果弹框显示的是Object,那就是对象,其他的就直接显示数据了。以下附上html及controller代码。
html
$(function () {
alert("页面加载完成后自动运行函数............");
// 全局页面加载函数,就是,页面完全加载完成后,js就自动发送请求到后台查询数据
// 所以就是ajax的几种发送方式,
// 即,直接写 $.get(),$.post(),$.ajax()等
/* // 基本功能菜单加载
$.post("/mavenweb/customer/ht.do",function(data){
// var retData = eval("(" + data + ")");
alert(data);
$("#username").val(data.cust_name);
$("#address").val(data.cust_address);
},"json");*/
$.ajax({
type:"get",
url:"/mavenweb/customer/ht.do",
dateType:"json",
success:function (data) {
var retData = eval("(" + data + ")");
$("#username").val(retData.cust_name);
$("#address").val(retData.cust_address);
}
});
});
controller:@ResponseBody该注解会自动帮我们将java对象与json格式之间进行转换
@RequestMapping("/customer/ht")
@ResponseBody
public Customer htm(HttpServletResponse response) throws Exception{
Customer customer = customerService.getCustomer();
System.out.print("html..............");
return customer;
}
附:jquery函数的全局事件,然后前端加载完页面后(各种样式等等),然后js再发送请求,加载数据
效果:打开页面后直接显示数据。
其实前端页面是将css样式,图片,引用的文件等都加载完之后,再进行执行js的函数的。