我在让这个 ajax 调用工作时遇到一些麻烦。 ajax 函数将一个简单的变量传递给我的 python Controller , Controller 返回查询结果。我正在使用 Web2py 框架。我收到错误:无法连接“str”和“NoneType”对象。这是代码:
Ajax 调用:
<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 Controller :
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)
感谢您的帮助!我真的很感激。
最佳答案
您看到的 Python 错误意味着 zona
的值只是 None
。我猜这是因为您错误地发出了 AJAX 请求。发出请求时,您应该以 { 'variable_name' : value }
格式定义数据。对于服务器端:请注意 request.vars
是 gluon.storage.Storage类似字典的对象。
因此,要解决此问题 - 修改您的 AJAX 请求,删除 dataType: 'string',
并将 data
设置为 { 'zona' : selectedVal }
。其次 - 使用 request.vars['zona']
获取服务器端的值。第三 - 在进一步编写 Python 代码之前,请阅读内存 PEP8用心!
关于javascript - Web2py - 无法连接 'str' 和 'NoneType' 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12963544/