虽然web2py有自成一套的ajax,但是我觉得很难用,还是记录一下通用的ajax写法,以备后用。
$('#city').change(function () {
city = $("#city").val()
$("#county").empty();
if(city==""){
$("#county").empty();
$("#county").append('<option value="">请选择百旺机构所在区/县</option>')
window.location.href="credit_detail";
return false
}
$.ajax({
type:'get',
url:'credit_detail',
data:{
"city":city
},
dataType:'json',
success:function(countyDatas){
$("#county").append('<option value="">请选择百旺机构所在区/县</option>')
$.each(countyDatas[0], function(key, countyData) {
var option = '<option value="'+countyData+'">'+key+'</option>'
$("#county").append(option)
})
$("#ccistable").empty()
$("#ccistable").append('<tr><td>百旺机构名称</td><td>百旺机构代码</td><td>已绑定网点数</td><td>操作</td></tr>')
bwDatas = countyDatas[1]
console.log(bwDatas)
countDatas = countyDatas[2]
for(i=0;i<bwDatas.length;i++){
console.log(bwDatas[i].bwid)
var tr = "<tr><td>"+bwDatas[i].bworgname+"</td><td>"+bwDatas[i].bworgid+"</td><td>"+countDatas[bwDatas[i].bwid]+"</td><td><a class='button2 dark' href='credit_billing_update?bwid="+bwDatas[i].bwid+"'>修改</a><button class='button2 dark' value='"+bwDatas[i].bwid+"' onclick='deleteorg(this.value);'>删除</button></td></tr>"
$("#ccistable").append(tr)
}
},
error:function(){
layer.alert("级联失败,请联系管理员")
}
});
});
这个ajax实现的是通过获取前端页面所选取的市、区/县来获取后台符合条件的数据,后台逻辑如下:
def credit_detail():
import json
pro = auth.user.province
query = (db.org10.province.startswith(pro))
citylist = db(query).select(db.org10.city,groupby=db.org10.city)
reason = db(query).select()
city = request.vars.city
county = request.vars.county
countdic = {}
countydic = {}
bankdic = {}
finalreason = []
for row in reason:
count = db(db.batch11.bwid==row["bwid"]).count()
countdic[row["bwid"]] = count
if (city != None) and (city != "") and (county==None):
countydic = {}
countdic = {}
reasonList = []
query = (db.org10.city==city) & query
reason = db(query).select()
for row in reason:
countydic[row["county"]] = row["county"]
count = db(db.batch11.bwid==row["bwid"]).count()
countdic[row["bwid"]] = count
for row in reason:
reasondic = {}
reasondic["bworgname"] = row["bworgname"]
reasondic["bworgid"] = row["bworgid"]
reasondic["bwid"] = row["bwid"]
reasonList.append(reasondic)
finalreason.append(countydic)
finalreason.append(reasonList)
finalreason.append(countdic)
return json.dumps(finalreason)
if county != None and county != "":
countdic = {}
reasonList = []
query = (db.org10.city==city) & (db.org10.county==county) & query
reason = db(query).select()
for row in reason:
count = db(db.batch11.bwid==row["bwid"]).count()
countdic[row["bwid"]] = count
for row in reason:
reasondic = {}
reasondic["bworgname"] = row["bworgname"]
reasondic["bworgid"] = row["bworgid"]
reasondic["bwid"] = row["bwid"]
reasonList.append(reasondic)
finalreason.append(reasonList)
finalreason.append(countdic)
return json.dumps(finalreason)
return dict(
citylist=citylist,
reason=reason,
countdic=countdic
)