我們都知道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的請求做出響應時,我們傳遞對象所面臨的“風險會小的多”。