#查询省市区 def selectCity(request): between=request.POST.get('ID') #等于1 查询市 等于2 查询区 city=request.POST.get('city') #省或者直辖市 area=request.POST.get('area') #市 Str_json="" #接收值 # 省市读取 k = open("static\shen.json", encoding='utf-8') # 读取json文件 h = k.read() k.close() setting_A = json.loads(h) # 解析成json字符串 if between=="1": for i in setting_A: if i['region']==city: Str_json=i['regionEntitys'] break else: for i in setting_A: zk=i['region'] if i['region'] == city: for j in i['regionEntitys']: if j['region'] == area: Str_json=j['regionEntitys'] break Str_json=list(Str_json) #先变成list Str_json=json.dumps(Str_json) #变成Json return JsonResponse({'ret': Str_json, 'Eor': 1})# 返回给前端
前台页面处理
//更新下拉框的
ID处理方式
city 省
area市 function select_city(ID,city,area) { $.ajax({ url:"{% url "UserInfo:selectCity" %}", //提交到那里 type:"POST", //提交类型 data:{"area":area,"ID":ID,"city":city}, //提交的数据 dataType:"json", success:function(ret){ //success不会直接运行,当服务器有数据传输过来才会触发执行。 // 匿名函数必须要有一个参数,用来接受数据,data1用来接受是服务器端返回字符串数据parseJSON var str=ret['ret']; var obj=JSON.parse(str); //alert(obj[0]['region']); if(ID==1) {//查询市 $("#city_shi").empty(); $("#city").empty(); $.each(obj,function(index,value){ $("#city_shi").append("<option value='"+(value.region=="市辖区"?"":value.region)+"'>"+(value.region=="市辖区"?"请选择市辖区":value.region)+"</option>"); }) select_city(2,city,obj[0]['region']);//绑定区下拉框 }else {//查询区 $("#city").empty(); $.each(obj,function(index,value){ $("#city").append("<option value='"+(value.region=="市辖区"?"":value.region)+"'>"+(value.region=="市辖区"?"请选择区域":value.region)+"</option>"); }) } form.render('select'); //刷新select选择框渲染 layui 插件的 } })
如果遇到错误为:类型“ValuesQuerySet”的对象不是JSON序列化。
解决办法为:先将ValuesQuerySet变成list 然后再用json.dumps()序列化
详细看上面代码
注:用的layui插件