0

我在让这个 ajax 调用工作时遇到了一些麻烦。ajax 函数将一个简单的变量传递给我的 python 控制器,控制器返回查询结果。我正在使用 Web2py 框架。我得到的错误:无法连接'str'和'NoneType'对象。这是代码:

阿贾克斯调用:

<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)

谢谢您的帮助!!对此,我真的非常感激。

4

2 回答 2

3

您看到的 Python 错误意味着 的值zona只是None. 我想这是因为您错误地发出了 AJAX 请求。发出请求时,您应该以{ 'variable_name' : value }格式定义数据。对于服务器端:注意它request.varsgluon.storage.Storage 类字典对象。

因此,要解决此问题 - 通过删除dataType: 'string',并设置data为类似{ 'zona' : selectedVal }. 第二 - 用于request.vars['zona']获取服务器端的值。第三 - 在进一步编写 Python 代码之前,请背诵PEP8

于 2012-10-18T21:02:23.473 回答
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)
于 2012-10-18T20:58:10.433 回答