JSON與Ajax數據交互的格式細解

進一步嘗試在後段發送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。一篇意義一般的記錄,但是耽誤了我不少時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章