如何将键值传递给JavaScript?

2 投票
2 回答
507 浏览
提问于 2025-04-16 15:23

我想通过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())}

撰写回答