0

このajax呼び出しを機能させるのに問題があります。ajax関数は単純な変数をPythonコントローラーに渡し、コントローラーはクエリの結果を返します。私はWeb2pyフレームワークを使用しています。エラーimgetting:は「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コントローラーです:

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',に設定することにより、AJAXリクエストを変更します。2番目-サーバー側で値を取得するために使用します。第三に、Pythonコードをさらに書く前に、PEP8を暗記してください。data{ 'zona' : selectedVal }request.vars['zona']

于 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 に答える