0

データベースから html ページにデータを読み込もうとしています。基本的に、ユーザーが自分のプロファイルにアクセスして [購入履歴] をクリックすると、データベースにクエリが実行され、ユーザーが購入したすべての製品が表示されます。

ajax と json を使用してこれを実行しようとしていますが、エラーが発生します。

TypeError: <gluon.dal.Field object at 0x091CCD90> is not JSON serializable

以下はコードです:

def prodHistoryJson():
    productName = db.sale.title
    productCost = db.sale.price
    prodShipAdd = db.sale.shipping_address
    prodShipCity = db.sale.shipping_city
    prodShipState = db.sale.shipping_state
    prodShipZipCode = db.sale.shipping_zip_code

    myproducts = {'prodName':productName, 
                  'cost':productCost, 
                  'shipAdd':prodShipAdd, 
                  'shipCity':prodShipCity,
                  'shipState':prodShipState, 
                  'shipZipCode':prodShipZipCode}

    import  gluon.contrib.simplejson as json
    returnData = json.dumps(myproducts)

return returnData

以下はjqueryです:

$.ajax( {
        url:'/suzannecollins/onlineStore/prodHistoryJson',
        data: { message: "Your products purchase history is listed below" },
        success: function(msg) {

           try {
                myproducts=JSON.parse(msg);
            }
            catch(err) {
                console.log(" error");
            }
            // place returned value in the DOM
            $('#returnData').html(myproducts.title + myproducts.price + myproducts.shipping_address
             + myproduct.shipping_state + myproducts.shipping_city + myproducts.shipping_zip_code);
    }
});

私は何を間違っていますか?ユーザーが purchase_History ボタンを押してデータベースにクエリを実行し、購入した製品を表示するという単純な方法でこれを行うだけで、これをすべて機能させることができます。上記のコードで同じことを行うにはどうすればよいですか?

4

1 に答える 1

0

昨夜の@Amadanのおかげで、jsonを使用してデータベースにクエリを実行し、pythonオブジェクトをシリアル化して結果を表示する方法をついに見つけました...

def pruchaseHistoryJson():
    if auth.user:
        rows = db(db.sale.auth_id == auth.user.id
                 ).select(db.sale.title, 
                          db.sale.price,
                          db.sale.shipping_address,
                          db.sale.shipping_state,
                          db.sale.shipping_city,
                          db.sale.shipping_zip_code)
    else:
        redirect(URL('default', 'user/login'))

import  gluon.contrib.simplejson as json
prodHistory = json.dumps([{'name': i.title, 
                           'prodValue':i.price,
                           'shipAdd':i.shipping_address,
                           'shipCity':i.shipping_city,
                           'shipState':i.shipping_state,
                           'shipCode':i.shipping_zip_code} for i in rows])
return prodHistory

このコードは正常に動作し、期待どおりに結果を表示します。ここで、このための jquery 関数の作成に戻ります。

于 2013-11-03T04:12:25.543 に答える