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。一篇意义一般的记录,但是耽误了我不少时间。

发布了14 篇原创文章 · 获赞 6 · 访问量 1354

猜你喜欢

转载自blog.csdn.net/qq_43662503/article/details/104587221