Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26314639
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Python/Ruby

2009-09-04 19:14:57

使用JSON代替XML做为数据传输是个不错的选择,下面我们看看django中如何使用json。

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

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

XML/HTML代码
  1.    <select name="city_id" id="city_id" onChange="getFacilityOptions(this.value)">  
  2. {% if city_list %}  
  3. {% for city in city_list %}  
  4. <option value="{{city.id}}">{{city.name}}option>  
  5. {% endfor %}  
  6. {% endif %}  
  7. select>  
  8. <select name="facility_id" id="facility_id" style="display:none">  
  9. select>  

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

JavaScript代码
  1. function getFacilityOptions(city_id){  
  2.     $.ajax({  
  3.         type: "GET",  
  4.         url: "/raw/facility_list/"+city_id+"/",  
  5.         dataType:   "json",  
  6.         success: function(json){  
  7.             // 显示设施  
  8.             $("#facility_id").show();  
  9.   
  10.             var facilitySelect = document.getElementById("facility_id");  
  11.               
  12.   
  13.             // 清空  
  14.             for ( var i=facilitySelect.options.length-1; i>-1; i– ){  
  15.                 facilitySelect[i] = null;  
  16.             }  
  17.   
  18.             // 创建select选项  
  19.             for(i=0;i
  20.                 facilitySelect.options[i] = new Option();  
  21.                 facilitySelect.options[i].text = json[i].label;  
  22.                 facilitySelect.options[i].value = json[i].text;  
  23.             }  
  24.         }   
  25.     })  
  26. }  

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

Python代码
  1. # 城市设施列表  
  2. def facility_list(request,city_id):  
  3.   
  4.     li = []  
  5.       
  6.     city = get_object_or_404(City, pk=city_id)  
  7.     facility_list = CityFacility.objects.filter(city=city)  
  8.     for object in facility_list:  
  9.         d = {}  
  10.         d['label'] = object.facility.name  
  11.         d['text'] = object.facility.id  
  12.           
  13.         li.append(d)  
  14.           
  15.     return HttpResponse(json.write(li))  

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

这样级联选择就OK了。选择city发送ajax请求django,django返回json数据,javascript解析json数据得到facility的select选择。

阅读(878) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~