免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3643 | 回复: 0
打印 上一主题 下一主题

django中使用json做级联选择 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-04 19:14 |只看该作者 |倒序浏览

使用JSON代替XML做为数据传输是个不错的选择,下面我们看看django中如何使用json。
首先下载
json-py
的类库,
http://blog.ntsky.com/wp-content/uploads/json-py-3_4.zip
我们使用关联select作为例子:
XML/HTML代码
   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函数
    JavaScript代码
    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 = null;  
  •             }   
  •             // 创建select选项              for(i=0;i
  •                 facilitySelect.options = new Option();                  facilitySelect.options.text = json.label;  
  •                 facilitySelect.options.value = json.text;              }  
  •         }       })  
  • }  
    通过ajax发送请求得到json数据,然后解析json数据输出select的option
    Python代码
    # 城市设施列表  
  • 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选择。
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84280/showart_2045760.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP