jquery-- json字串沒有自動包裝為 json物件
阿新 • • 發佈:2018-12-08
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的原因~