我们都知道springMvc框架契合了ajax,通过@ResponseBody可以返回我们多想要的数据,但是,就在我前几天使用amChart制作图表的时候,我在后台传递是字符串,格式什么都正符合amChart前端所需的数据,但确是失败的结局。
下面为其需要的数据格式:
var chartData = [
{
"country": "USA",
"year2004": 3.5,
"year2005": 4.2
},
{
"country": "UK",
"year2004": 1.7,
"year2005": 3.1
}];
后来我当我返回的是对象的时候,OK了,图表没有问题了。
下面是我返回的数据
@ResponseBody
@RequestMapping(value={"chart_yjdb.htm"})
public List<Map<String,Object>>..............
所以,问题显而易见了,当在js内部时,其定义的参数,例如year2005后面对应的4.2是没有“”的,虽然以字符串的形式返回给页面的数据表面上和其所需的数据‘一模一样’,但是其对于js而言完全不同,js内部定义的不需要解析,而我们传递过来的对象或是springMvc,或是Ajax,或是js,会将其转换成自动带“”的,无论是谁,反正这种机制都和他们脱不了干系。由此可见,当springMvc在对ajax的请求做出响应时,我们传递对象所面临的“风险会小的多”。