進一步嘗試在後段發送json數據,在前端通過ajax獲取,經過多次嘗試發現,在cent OS上面和在PC上面,表現是不一樣的,所以還是要多次嘗試,找到其中的規律,並一一記錄下來。
1. json發送普通的字典
這種是最簡單,發動最簡單的鍵值對,也是最基本的功能,網上最基本的教程就是這樣
發送一個charts_name字典,字典內是字符串,最簡單的格式
charts_name = {'chart1_name':'大燈材質圖','chart2_name':'大燈材質分佈圖'}
datas = {'charts_name':charts_name}
content = json.dumps(datas, ensure_ascii=False)
發動成功,接收成功
2. json發送列表
item_name和item_value兩個列表
item_name = ['LED', '鹵素', '氙氣']
item_value = ['266', '126', '15']
datas = {'item_name': item_name, 'item_value': item_value}
content = json.dumps(datas, ensure_ascii=False)
發動成功,接收成功
3. json發送字典+列表組合
這是真正應用比較多的場合,字典+列表本質上還是一元組合,深度爲1
charts_name = {'chart1_name':'大燈材質圖','chart2_name':'大燈材質分佈圖'}
item_name = ['LED', '鹵素', '氙氣']
item_value = ['266', '126', '15']
datas = {'item_name': item_name, 'item_value': item_value,
'car_prosys_name': car_prosys_name,'charts_name':charts_name}
發動成功,接收成功
4. json發送字典+列表+列表字典組合
這屬於高級應用了,列表字典深度已經到達了2
charts_name = {'chart1_name':'大燈材質圖','chart2_name':'大燈材質分佈圖'}
item_name = ['LED', '鹵素', '氙氣']
item_value = ['266', '126', '15']
car_prosys_name = ['德系', '日系', '自主', '美系', '韓系', '法系']
car_prosys_value = [{'LED': ['266', '126', '15', '15', '15', '15']},
{'鹵素': ['266', '126', '15', '15', '15', '15']},
{'氙氣': ['266', '126', '15', '15', '15', '15']}]
datas = {'charts_name':charts_name,
'item_name': item_name, 'item_value': item_value,
'car_prosys_name': car_prosys_name,'car_prosys_value': car_prosys_value}
結果,發送成功,接收解析出錯,這個深度爲2的列表字典識別成爲對象。
在網上搜了一下,有個辦法可以解決,就是ajax中把traditional屬性設置爲true。
果然這就是深度解析json的方法。
接下來我試了其它各種組合,在traditional:true的情況下,都是可以的。
5. 總結
JSON進行前後端數據交互時,對於深度超過1的數據,必須將traditional設置爲true。一篇意義一般的記錄,但是耽誤了我不少時間。