‘壹’ 请问用什么方式可以实现省市级联的效果呀 省市的数据是从数据库中查出来的
使用jquery的ajax方式从服务器加载json数据至客户端即可以实现省市级联的效果。
具体如下:
1)、页面初始化时,首先加载所有的省;
2)、选择省,ajax传送编码至服务器,服务器根据选中的省编码,返回省下所有的市。
这样就能动态实现了省市级联的效果了。
‘贰’ web前端怎么引用jquery省市级联插件
1.[代码]新增选择城市
$(function(){
$("#province").cityCasCade("#city").cityCasCade('select','河南省');
//or
$("#province").cityCasCade("#city").cityCasCade('select','河南省','开封市');
}
/**
*javadiqye
*城市数据时从网上Copy的
*级联功能也是参考网上已做好的思路
*封装成插件为了以后使用方便
*add增加选中城市方法select
*/
(function($){
$.fn.cityCasCade=function(operation,province,city){
varselectCity=null,params=null,overparams=null;
if(typeofoperation=="string"){
if(operation=="select"){
if(province){
$(this).find("option").each(function(){
if($(this).val()==province){
this.selected=true;
$(this).change();
if(city){
$($.fn.cityCascadeParam.selectCity).find("option").each(function(){
if($(this).val()==city){
this.selected=true;
$(this).change();
}
});
}
}
});
}
return$(this);
}
selectCity=operation;
}
else{
if(operation.selector)selectCity=operation.selector;
if(operation.overide&&operation.data)overparams=operation.data;
elseparams=operation.data;
}
$.fn.cityCascadeParam={};
$.fn.cityCascadeParam.data=_provinces_;
$.fn.cityCascadeParam.selectCity=null;
if(selectCity)$.fn.cityCascadeParam.selectCity=selectCity;
elsethrow"城市选择器不能为空";
$.fn.cityCascadeParam.cityValue=$($.fn.cityCascadeParam.selectCity+":first").val();
$.fn.cityCascadeParam.cityText=$($.fn.cityCascadeParam.selectCity+":first").text();
if(overparams)$.fn.cityCascadeParam.data=overparams;
else$.extend($.fn.cityCascadeParam.data,params);
$.fn.cityCascadeParam.loadProvince=function(self){
for(varpin$.fn.cityCascadeParam.data){
varopt=document.createElement("option");
opt.innerHTML=p;
opt.value=p;
self.appendChild(opt);
}
}
$.fn.cityCascadeParam.loadCity=function(parent){
varself=$($.fn.cityCascadeParam.selectCity).get(0);
if(!self)throw"未找到城市下拉框城市选择器>>"+$.fn.cityCascadeParam.selectCity;
varselectProvince=$(parent).val();
if(selectProvincein$.fn.cityCascadeParam.data){
varcitys=$.fn.cityCascadeParam.data[selectProvince];
self.innerHTML="";
for(varindex=0;index<citys.length;index++){
opt=document.createElement("option");
opt.innerHTML=citys[index];
opt.value=citys[index];
self.appendChild(opt);
}
}else{
self.innerHTML="";
opt=document.createElement("option");
opt.innerHTML=$.fn.cityCascadeParam.cityText;
opt.value=$.fn.cityCascadeParam.cityValue;
self.appendChild(opt);
}
}
this.each(function(){
$.fn.cityCascadeParam.loadProvince(this);
$(this).change(function(){
$.fn.cityCascadeParam.loadCity(this);
});
});
return$(this);
}
})($);
var_provinces_={四川省:["成都市","自贡市","攀枝花市","泸州市","德阳市","绵阳市","广元市","遂宁市","内江市","乐山市","南充市","眉山市","宜宾市","广安市","达州市","雅安市","巴中市","资阳市","阿坝藏族羌族自治州","甘孜藏族自治州","凉山彝族自治州"],山西省:["太原市","大同市","阳泉市","长治市","晋城市","朔州市","晋中市","运城市","忻州市","临汾市","吕梁市"],内蒙古:["呼和浩特市","包头市","乌海市","赤峰市","通辽市","鄂尔多斯市","呼伦贝尔市","巴彦淖尔市","乌兰察布市","兴安盟","锡林郭勒盟","阿拉善盟"],辽宁省:["沈阳市","大连市","鞍山市","抚顺市","本溪市","丹东市","锦州市","营口市","阜新市","辽阳市","盘锦市","铁岭市","朝阳市","葫芦岛市"],吉林省:["长春市","吉林市","四平市","辽源市","通化市","白山市","松原市","白城市","延边朝鲜族自治州"],黑龙江省:["哈尔滨市","齐齐哈尔市","鸡西市","鹤岗市","双鸭山市","大庆市","伊春市","佳木斯市","七台河市","牡丹江市","黑河市","绥化市","大兴安岭地区"],上海:["上海"],江苏省:["南京市","无锡市","徐州市","常州市","苏州市","南通市","连云港市","淮安市","盐城市","扬州市","镇江市","泰州市","宿迁市"],浙江省:["杭州市","宁波市","温州市","嘉兴市","湖州市","绍兴市","金华市","衢州市","舟山市","台州市","丽水市"],安徽省:["合肥市","芜湖市","蚌端口市","淮南市","马鞍山市","淮北市","铜陵市","安庆市","黄山市","滁州市","阜阳市","宿州市","巢湖市","六安市","亳州市","池州市","宣城市"],福建省:["福州市","厦门市","莆田市","三明市","泉州市","漳州市","南平市","龙岩市","宁德市"],江西省:["南昌市","景德镇市","萍乡市","九江市","新余市","鹰潭市","赣州市","吉安市","宜春市","抚州市","上饶市"],山东省:["济南市","青岛市","淄博市","枣庄市","东营市","烟台市","潍坊市","济宁市","泰安市","威海市","日照市","莱芜市","临沂市","德州市","聊城市","滨州市","菏泽市"],河南省:["郑州市","开封市","洛阳市","平顶山市","安阳市","鹤壁市","新乡市","焦作市","濮阳市","许昌市","漯河市","三门峡市","南阳市","商丘市","信阳市","周口市","驻马店市"],湖北省:["武汉市","黄石市","十堰市","宜昌市","襄樊市","鄂州市","荆门市","孝感市","荆州市","黄冈市","咸宁市","随州市","恩施土家族苗族自治州"],湖南省:["长沙市","株洲市","湘潭市","衡阳市","邵阳市","岳阳市","常德市","张家界市","益阳市","郴州市","永州市","怀化市","娄底市","湘西土家族苗族自治州"],广东省:["广州市","韶关市","深圳市","珠海市","汕头市","佛山市","江门市","湛江市","茂名市","肇庆市","惠州市","梅州市","汕尾市","河源市","阳江市","清远市","东莞市","中山市","潮州市","揭阳市","云浮市"],广西省:["南宁市","柳州市","桂林市","梧州市","北海市","防城港市","钦州市","贵港市","玉林市","百色市","贺州市","河池市","来宾市","崇左市"],海南省:["海口市","三亚市"],重庆市:["重庆"],贵州省:["贵阳市","六盘水市","遵义市","安顺市","铜仁地区","黔西南布依族苗族自治州","毕节地区","黔东南苗族侗族自治州","黔南布依族苗族自治州"],云南省:["昆明市","曲靖市","玉溪市","保山市","昭通市","丽江市","思茅市","临沧市","楚雄彝族自治州","红河哈尼族彝族自治州","文山壮族苗族自治州","西双版纳傣族自治州","大理白族自治州","德宏傣族景颇族自治州","怒江傈僳族自治州","迪庆藏族自治州"],西藏自治区:["拉萨市","昌都地区","山南地区","日喀则地区","那曲地区","阿里地区","林芝地区"],陕西省:["西安市","铜川市","宝鸡市","咸阳市","渭南市","延安市","汉中市","榆林市","安康市","商洛市"],甘肃省:["兰州市","嘉峪关市","金昌市","白银市","天水市","武威市","张掖市","平凉市","酒泉市","庆阳市","定西市","陇南市","临夏回族自治州","甘南藏族自治州"],青海省:["西宁市","海东地区","海北藏族自治州","黄南藏族自治州","海南藏族自治州","果洛藏族自治州","玉树藏族自治州","海西蒙古族藏族自治州"],宁夏自治区:["银川市","石嘴山市","吴忠市","固原市","中卫市"],新疆自治区:["乌鲁木齐市","克拉玛依市","吐鲁番地区","哈密地区","昌吉回族自治州","博尔塔拉蒙古自治州","巴音郭楞蒙古自治州","阿克苏地区","克孜勒苏柯尔克孜自治州","喀什地区","和田地区","伊犁哈萨克自治州","塔城地区","阿勒泰地区"],台湾省:["台北市"],香港特区:["香港"],澳门特区:["澳门"],河北省:["石家庄","唐山","秦皇岛","张家口","承德","廊坊","邯郸","邢台","保定","沧州","衡水"]};
‘叁’ 有没有前端大佬写过一种方法,根据任意地址拿到该地址所对应的省市区的方法
货拉拉上面输入地址。
‘肆’ 想做一个android 省市县三级联动,数据是从接口读取,怎么做
以前做过,数据是在本地xml里面取的: 上面是省市区的xml数据网盘地址。 如果要做成从服务器取,那么就一次性取下来,然后还是一样的流程。 如果你想选择省再去取对应的市,那么就要传省的id去获取对应的市,这时候就要有等待框,可能用户体验差一点。
‘伍’ Django接受前端数据的几种方法
字符型
字符型的数据相对好获取,前端传递的方法如下:
sendData = {
"exporttype": exporttype,
"bugids": bugids,
"test": JSON.stringify({"test": "test"})
};
在Django的后端只要使用exporttype = request.GET.get("exporttype")
就能正常的获取到这个数据了。
注意: 在Python2.7中数据是unicode编码的,如果要使用,有时候需要进行转str
结果示例:
Excle <type 'unicode'>
数组型
获取数组型的数据如果使用获取字符串的数据的方法,打出的结果是None。我们要使用这个方法:
bugids = request.GET.getlist("bugids[]")
这样获取的数据就是数组类型。
注意: 获取的数组中的元素是unicode编码的,在某些时候使用需要转编码
结果示例:
•传递的url
[14/Jul/2016 11:00:41]"GET /testtools/exportbug/?exporttype=Excle&bugids%5B%5D=102&bugids%5B%5D=101&bugids%5B%5D
•获取的数据
[u'102', u'101', u'100', u'99', u'98', u'97', u'96', u'95', u'94', u'93', u'92', u'91', u'90', u'89', u'88', u'87'
字典型
字典型数据其实可以当成字符串数据来处理,获取到对应字符串后使用JSON模块做一下格式化就行了。
对于前端来说,传递字典型的数据就是传递JSON数据,所以使用的方法是:
"test": JSON.stringify({"test": "test"})
结果示例:
{"test":"test"} <type 'unicode'>
相关源码
•Get方法
Get方法是wsgi里面的一个方法。
def GET(self):
# The WSGI spec says 'QUERY_STRING' may be absent.
raw_query_string = get_bytes_from_wsgi(self.environ, 'QUERY_STRING', '')
return http.QueryDict(raw_query_string, encoding=self._encoding)
最终返回的是一个http.QueryDict(raw_query_string, encoding=self._encoding)http的原始数据,而QueryDict继承于MultiValueDict ,所以我们直接看MultiValueDict就好了。
•MultiValueDict
其实源码看起来并不难。
def get(self, key, default=None):
"""
Returns the last data value for the passed key. If key doesn't exist
or value is an empty list, then default is returned.
"""
try:
val = self[key]
except KeyError:
return default
if val == []:
return default
return val
def getlist(self, key, default=None):
"""
Returns the list of values for the passed key. If key doesn't exist,
then a default value is returned.
"""
try:
return super(MultiValueDict, self).__getitem__(key)
except KeyError:
if default is None:
return []
return default
def __getitem__(self, key):
"""
Returns the last data value for this key, or [] if it's an empty list;
raises KeyError if not found.
"""
try:
list_ = super(MultiValueDict, self).__getitem__(key)
except KeyError:
raise MultiValueDictKeyError(repr(key))
try:
return list_[-1]
except IndexError:
return []
‘陆’ 安卓开发中的全国各个省市县数据如何获取并且关联上
联动可以用事件监听,当上级数据发生改变时,获取当前值,然后根据当前值得到下级数据集
pengx6107发表于
2013-6-6
09:39:10
我不知道你的应用是什么,我是这么做的,在本地用sqlite建了一个跟网上省市县相同的表,建一个同步程序,将网上的省市县数据下载到本地,这样你就可以在本地分别建立省的ArrayList、以省为参数的市ArrayList、以市为参数的县的ArrayList,这样在省spinner加载省的数据源,在省得spinner事件中加载市的数据源,同理,在市的spinner事件中加载县的数据,分别在省市县的spinner事件取得值,希望对你有帮助
‘柒’ 省市县三级联动菜单,JS全国省市县(区)联动,怎样连接到数据库啊
给你一些思路:
1、省市县的数据写到数据库中。每条数据会有一个父ID(上级ID)。
2、在页面上省变动后,查询市的数据以省的ID作为条件,县也一样,以市 的ID为条件。
第二种方法,
由于全国的这些基本上是固定的,一般变动比较少,这可以把这个数据写到JS里面,通过JS来实现。这个加载会快一些。这些数据可以到国家统计局的网站去下载。
‘捌’ Vant Cascader 省市县三级联动
1、引用
2、添加
3、关联data
data () {
return {
cascaderValue: "",//选择的数据
addressDataArr:[],//保存省市县数据
show:false,
provinceIndex:-1,//选择省的次序
cityIndex:-1,//选择城市的次序
}
}
4、请求省数据
this.getAddress("")
因为组件使用text和value展示,所以获取的接口数据需要手动再存一下,element.name是名称,element.code是城市编码
重新选择省或市要重置之前选择的次序,确保在网络请求时数据能放入正确位置
onFinish后,选择项的value会存在v-model的cascaderValue中,这里我存的是区县的编码,可以直接传给后台
调试过程曾出现过放入childern数据后,组件刷新,数据不展示或一闪而过的情况,差点就砸电脑了,网络一圈不知道什么情况,一般这种情况多半是粗心落下什么东西了。。。仔细检查一遍发现是因为忘了写 v-model。。。。v-model很重要,一定要写
‘玖’ citypicker用法
方法
导入js文件
[html]view plain
<scriptsrc="/jquery.js"></script><!--jQueryisrequired-->
<scriptsrc="/city-picker.data.js"></script>
<scriptsrc="/city-picker.js"></script>
[html]view plain
<divdata-toggle="city-picker">
<inputreadonlytype="text"data-toggle="city-picker">
</div>
原理是通过js调取city-picker.data.js里面的json数据。然后展示输入,json格式如图
[javascript]view plain
<spanstyle="white-space:pre"></span>86:{
'A-G':[
{code:'340000',address:'安徽省'},
{code:'110000',address:'北京市'},
{code:'500000',address:'重庆市'},
{code:'350000',address:'福建省'},
{code:'620000',address:'甘肃省'},
{code:'440000',address:'广东省'},
{code:'450000',address:'广西壮族自治区'},
{code:'520000',address:'贵州省'}],
'H-K':[
{code:'460000',address:'海南省'},
{code:'130000',address:'河北省'},
{code:'230000',address:'黑龙江省'},
{code:'410000',address:'河南省'},
{code:'420000',address:'湖北省'},
{code:'430000',address:'湖南省'},
{code:'320000',address:'江苏省'},
{code:'360000',address:'江西省'},
{code:'220000',address:'吉林省'}],
'L-S':[
{code:'210000',address:'辽宁省'},
{code:'150000',address:'内蒙古自治区'},
{code:'640000',address:'宁夏回族自治区'},
{code:'630000',address:'青海省'},
{code:'370000',address:'山东省'},
{code:'310000',address:'上海市'},
{code:'140000',address:'山西省'},
{code:'610000',address:'陕西省'},
{code:'510000',address:'四川省'}],
'T-Z':[
{code:'120000',address:'天津市'},
{code:'650000',address:'新疆维吾尔自治区'},
{code:'540000',address:'西藏自治区'},
{code:'530000',address:'云南省'},
{code:'330000',address:'浙江省'}]
},
110000:{
110100:'北京市',
},
110100:{
110101:'东城区',
110102:'西城区',
110105:'朝阳区',
110106:'丰台区',
110107:'石景山区',
110108:'海淀区',
110109:'门头沟区',
110111:'房山区',
110112:'通州区',
110113:'顺义区',
110114:'昌平区',
110115:'大兴区',
110116:'怀柔区',
110117:'平谷区',
110228:'密云县',
110229:'延庆县'
},
120000:{
120100:'天津市'
},
120100:{
120101:'和平区',
120102:'河东区',
120103:'河西区',
120104:'南开区',
120105:'河北区',
120106:'红桥区',
120110:'东丽区',
120111:'西青区',
120112:'津南区',
120113:'北辰区',
120114:'武清区',
120115:'宝坻区',
120116:'滨海新区',
120221:'宁河县',
120223:'静海县',
120225:'蓟县'
},
130000:{
130100:'石家庄市',
130200:'唐山市',
130300:'秦皇岛市',
130400:'邯郸市',
130500:'邢台市',
130600:'保定市',
130700:'张家口市',
130800:'承德市',
130900:'沧州市',
131000:'廊坊市',
131100:'衡水市'
},
86:{}里面第一层是选择第二层是省份代码
跟86同层的都是省市的树形结构和市区的树形结构。
这样我们可以从数据库中找出我们需要显示的省市区数据给city-picker
先附上代码:
[java]view plain
<spanstyle="white-space:pre"></span>//增加省份
PageDatatempPd=newPageData();
List<PageData>provinces=ordersService.listAllProvince(pd);//获取所有的省份
tempPd.put("中国",provinces);
data.put("86",tempPd);
//增加城市
List<PageData>citys=ordersService.listAllCity(pd);//获取所有的城市和省份
Map<String,Object>provinceMap=newHashMap<>();
for(PageDataindex:citys){
if(provinceMap.get(index.getString("province_Code"))==null){
Map<String,Object>cityMap=newHashMap<>();
cityMap.put(index.getString("city_Code"),index.getString("city_Name"));
provinceMap.put(index.getString("province_Code"),cityMap);
}else{
((HashMap<String,Object>)provinceMap.get(index.getString("province_Code")))
.put(index.getString("city_Code"),index.getString("city_Name"));
}
}
data.putAll(provinceMap);
//增加中心
List<PageData>centers=centerService.listAll(pd);//获取所有中心
Map<String,Object>centerMap=newHashMap<>();
for(PageDataindex:centers){
if(index.get("center_City")==null){
continue;
}
if(centerMap.get(index.getString("center_City"))==null){
Map<String,Object>center=newHashMap<>();
center.put(String.valueOf(index.get("CENTER_ID")),index.getString("CENTER_MC"));
centerMap.put(index.getString("center_City"),center);
}else{
((HashMap<String,Object>)centerMap.get(index.get("center_City"))).put(String.valueOf(index.get("CENTER_ID")),index.getString("CENTER_MC"));
}
}
data.putAll(centerMap);
这里面的PageData是继承的hashMap。获取所有城市的时候连表查询,查处城市所在省,字段分别是province_Code,province_Name,city_Code,city_Name;
查找中心(也就是区)的时候查找中心所在城市,字段分别是city_Code,city_Name,center_Name,center_Code.
把查出来的数据封装成city-picker.data.js一样格式数据后,转成json输出到前端,然后前端用给出的json数据显示city-pick就能自定义省市区三级联动了