六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 53|回复: 0

django中使用json做级联选择

[复制链接]

升级  4%

14

主题

14

主题

14

主题

秀才

Rank: 2

积分
56
 楼主| 发表于 2013-1-23 02:21:26 | 显示全部楼层 |阅读模式
使用JSON代替XML做为数据传输是个不错的选择,下面我们看看django中如何使用json。

首先下载json-py的类库,http://blog.ntsky.com/wp-content/uploads/json-py-3_4.zip

我们使用关联select作为例子:

<select name="city_id" id="city_id" onChange="getFacilityOptions(this.value)">   {% if city_list %}   {% for city in city_list %}   <option value="{{city.id}}">{{city.name}}</option>   {% endfor %}   {% endif %}   </select>   <select name="facility_id" id="facility_id" style="display:none">   </select>   

我们选择city时候关联出facility,这里使用jquery的ajax函数

function getFacilityOptions(city_id){       $.ajax({           type: "GET",           url: "/raw/facility_list/"+city_id+"/",           dataType:   "json",           success: function(json){               // 显示设施               $("#facility_id").show();                  var facilitySelect = document.getElementById("facility_id");                                 // 清空               for ( var i=facilitySelect.options.length-1; i>-1; i– ){                   facilitySelect[i] = null;               }                  // 创建select选项               for(i=0;i<json.length;i++){                   facilitySelect.options[i] = new Option();                   facilitySelect.options[i].text = json[i].label;                   facilitySelect.options[i].value = json[i].text;               }           }        })   }   

通过ajax发送请求得到json数据,然后解析json数据输出select的option

# 城市设施列表   def facility_list(request,city_id):          li = []              city = get_object_or_404(City, pk=city_id)       facility_list = CityFacility.objects.filter(city=city)       for object in facility_list:           d = {}           d['label'] = object.facility.name           d['text'] = object.facility.id                      li.append(d)                  return HttpResponse(json.write(li))   

这里定义了list,里面包含了一组Dictionary

这样级联选择就OK了。选择city发送ajax请求django,django返回json数据,javascript解析json数据得到facility的select选择。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表