我有一些麻烦让这个ajax呼叫工作。 ajax函数将一个简单变量传递给我的python控制器,控制器返回查询结果。我正在使用Web2py框架。我得到的错误:无法连接'str'和'NoneType'对象。这就是代码:
Ajax Call:
<script>
function TestVolumen() {
var selectVal = $('#zonas :selected').val();
$.ajax({
data: selectVal ,
url: '/shell/default/ajax2',
type: 'POST',
cache: false,
dataType: 'string',
success: function(request) {
//console.log(request[0]);
//console.log(request[0].zona);
selectVal = $('#zonas :selected').val();
for (x=0;x<request.length;x++){
if (request[x].zona == selectVal ) {
//alert(request[x].promedio);
//alert(request[x].zona);
$('div#tabs .vol').html(request[x].promedio.toFixed(4));
}
}
}
});
}
</script>
这是python控制器:
def ajax2():
import gluon.contrib.simplejson
zona = request.vars
queryvol = "select sells.product1 FROM site inner join zona on site.zone_number = zona.id inner join sells on sells.site = site.id WHERE zona.id =" + zona +" ;', as_dict = True"
vol=db.executesql(queryvol)
return gluon.contrib.simplejson.dumps(vol)
感谢您的帮助!!我真的很感激。
答案 0 :(得分:3)
您看到的Python错误意味着zona
的值只是None
。我想这是因为您错误地提出了AJAX请求。发出请求时,您应该以{{1}}格式定义数据。对于服务器端:请注意{ 'variable_name' : value }
是gluon.storage.Storage类字典对象。
因此,要解决此问题,请移除request.vars
并将dataType: 'string',
设置为data
之类的内容来修改您的AJAX请求。第二 - 使用{ 'zona' : selectedVal }
获取服务器端的值。第三 - 在进一步编写Python代码之前,请仔细阅读记忆PEP8!
答案 1 :(得分:0)
根据PEP 249,请用户绑定变量。
queryvol = """
INSERT INTO [TABLENAME]
VALUES(%s, %s, %s, %s, %s, %s, %s, %d)
)""" % (a, b, c, d, e, f, g, h, i)