我正在尝试将数据从数据库加载到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按钮并查询数据库并显示购买的产品,我就可以全部工作。我如何用上面的代码做同样的事情?
答案 0 :(得分: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函数。