1. 程式人生 > >jquery-- json字串沒有自動包裝為 json物件

jquery-- json字串沒有自動包裝為 json物件

jquery 的一個坑

頁面使用 ajax ,回撥函式中獲取後端返回的 json 格式資料(ajax 未顯式指定返回值型別),後端controller方法標註 @ResponseBody 並返回一個 例項物件。

程式碼大致如下

 1 $.ajax({
 2        type: "POST",
 3        url: "xxxxxx",
 4        data: "xxxxx=xxxxx",
 5        success: function(aaa){
 6  
 7               alert(aaa.msg);
 8                9
} 10 11 })

 

正常情況下 這裡可以訪問到 aaa.msg(aaa是後端返回的例項物件,包含一個 msg屬性)。

但是alert 顯示  undefined,

如果把第7行程式碼改為    alert(aaa);  則可以顯示一個 json格式的字串。

這表明返回的 aaa 是一個  json字串  而不是 json物件。如果是json物件 那麼alert 顯示會是  object object。

關於json字串  和 json物件  參考:https://bbs.csdn.net/topics/390851792  

其中17樓的回答擷取部分如下:

json格式的字串,如果你前端用的是純js,就要eval一下,但如果有用到jq框架等,它會幫你自動轉成json物件,就不用eval了。
注:eval方法不是轉json物件的意思,而是將字串轉成可執行的js程式碼。
如:對於一個字串“alert('hello world')",eval這個字串就能執行了。

這表明問題在於  js沒有自動將 json字串  轉成 json物件。檢查了一下發現 引用的 是  jquery-1.3.2.min.js   ,換成 jquery.js (1.9.1版本) 後,程式碼可以正常彈出 aaa.msg的值了。

還不清楚是 版本原因還是 因為 min的原因~