如何将键值传递给JavaScript?
我想通过AJAX把图片的地址发送到浏览器。
服务器端代码:
que = db.Query(Imageitem).order('-created')
item_list = que.fetch(limit=1)
if(len(item_list)>0):
itemkey = {'imgid':item_list[0].key()}
else:
itemkey = {'imgid':''}
json_itemkey = gaejsonEncoder.encode(itemkey)
客户端模板:
<img src='img?img_id=$(.imgid)'></img>
我使用了SNBinder来进行客户端的绑定,$(.imgid)表示的是itemkey[0].imgid。
但是出现了错误。
datastore_types.Key.from_path(u'Imageitem', 515L, _app=u'fileshare')
is not JSON serializable
有没有办法把数据存储实体的键发送到客户端呢?
任何建议都非常感谢。
2 个回答
0
在我的情况下,我不需要那个键,所以我使用了一个从json.JSONEncoder扩展出来的类,来捕捉这个db.Model中的键实例。
import json
from datetime import datetime
from google.appengine.ext.db import Key
class ComplexEncoder(json.JSONEncoder):
def default(self,obj):
if isinstance(obj,datetime):
return obj.isoformat()
if isinstance(obj,Key):
return ''
return json.JSONEncoder.default(self,obj)
2
如果你想把一个关键项转换成JSON格式,只需要把这个关键项用字符串的方式表示出来,也就是用str()这个函数来处理一下这个关键项。
itemkey = {'imgid': str(item_list[0].key())}