看板 Web_Design 關於我們 聯絡資訊
最近使用一個套件叫 select2 因為我的資料來源來自DB,所以我在後端透過DataTable轉成select2 要吃的格式... Select2要吃的格式大致長這樣 var aa = [{id:'2',text:'philosophy',children: [{id: '2', text:'ethics'}, {id: '3', text:'eefecs'}, {id: '4', text:'eefecs'}]}, {id:'3',text:'sociology', children: [{id: '2', text:'ethics'}, {id: '5', text:'eefeet'}, {id: '8', text:'eefecs'}]}, {id:'4',text:'ddgeology', children: [{id: '9', text:'ethscs'}, {id: '8', text:'eefecs'}, {id: '7', text:'asefcs'}]}]; 如果我在前端將aa傳給select2 元件,確實可以使用,因為會直接視為aa有三個物件。 但是,如果我透過AJAX,在後台組成跟aa一樣的字串, 再透過JSON傳到前台。並使用一個變數(假設為bb)承接。 我將bb丟給select2元件,會拋出錯誤,而在前端用DEBUG看,bb會是一個字串。 這時又不會將bb視為3個物件。 於是,想說用JSON.parse(bb)轉成物件,但又會拋出Expection. 請問各位前輩,後端字串要如何像aa變數一樣變成三個物件。 先謝謝各位前輩指點。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.106.194 ※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1441195965.A.AF5.html
Ayukawayen: JSON的規範比JS宣告變數的文法嚴 引號逗號都要注意 09/02 20:32
Ayukawayen: 建議var bb = JSON.stringify(aa); JSON.parse(bb) 09/02 20:33
Ayukawayen: 後台丟出來的字串 用JSON encoder包 不要自己組 09/02 20:34
感謝前輩指點,但是透過您所說的方式... 用DEBUG查看bb,仍然是字串@@ 在後台我有使用JSON.NET組成再往前台丟... return new JsonConvert.SerializeObject( new object{Result:true,ResultText:jsonstr,ResultMsg:ErrMsg }); 前台接回來的方式就... success: function(data){ if(data.Result){ bb = data.ResultText} }, 但是就遇到上述的問題...暈~ ※ 編輯: don750421 (114.39.106.194), 09/02/2015 22:04:18 ※ 編輯: don750421 (114.39.106.194), 09/02/2015 22:05:48
lovving777: 前端可以使用typeof()確認物件是String或Object 09/03 01:04
lovving777: 試試看var bb = JSON.stringify(aa); 09/03 01:06
lovving777: bb = JSON.parse(bb); 09/03 01:06
lovving777: JSON.stringify() 是將JSON Object轉為String 09/03 01:09
lovving777: JSON.parse() 是將JSON String 轉為物件 09/03 01:09
lbeeon: 有 response的資料? 話說json.net和c#原生轉出來會不太一 09/03 18:38
lbeeon: 樣 09/03 18:38
scars: 後台輸出的JSON格式錯了 09/06 01:13
brian90191: json object的key要用文字當做鍵值吧 09/06 18:02
brian90191: Result、ResultText、ResultMsg 都要加上引號("") 09/06 18:03
brian90191: 然後可以丟來這裡驗證看看 http://jsonlint.com/ 09/06 18:04