我目前正在尝试使用PubNub将html更新推送到用户的页面。我想将html代码推送给用户(这包括链接,引号,需要使用html),并将其添加到用户表的末尾。
我目前正在尝试使用api发送如下消息:
info = pubnub.publish({
'channel' : 'myChannel',
'message' : {
'some_text' : message
}
})
消息是:
<div class="content">Message text here.<img src="image.gif" border="0" alt="" title="laugh out loud" class="inlineimg" /></div>
我的问题是,当我尝试发送页面更新时,我收到以下消息:
</div> is not JSON serializable
我假设这是因为我试图发送HTML代码?
有关如何解决此问题/更好方法的任何建议吗?这是我第一次尝试将消息“推送”到网页上,所以我可能实现了这一切。
答案 0 :(得分:2)
您正尝试通过PubNub发送原始HTML并运行到“JSON not Serializable”问题。首先,假设你可以推送HTML 代码,你是正确的!欢呼。只需确保您放在"message"
内的数据实际上是 STRING 。以下类型是JSON Serializable:
确保不发送特殊的python类或函数。这些不会序列化。字符串内容可以包含任何 UTF-8 字符单字节和多字节。
将此Python用于"message"
:
message = '''<div class="content">Message text here.<img src="image.gif" border="0" alt="" title="laugh out loud" class="inlineimg" /></div>'''
答案 1 :(得分:0)
我不是网络专家,但对我来说听起来你应该定义一个模型并发送它。然后,您将反序列化模型并更新客户端。这样你可以使用JSon,你不会遇到任何问题。
如果您必须发送HTML,则传输HTML时的另一个选项是将其编码为基本64字符串。使用这种方法,您可以在发送字符串之前对其进行编码,并在接收客户端上对其进行解码。关于在谷歌上编码base64字符串的信息很多。这使得字符串不会绊倒HTML标签等。
以下是与base64进行编码的示例:http://ostermiller.org/calc/encode.html 例如,以下代码:
<img src="images/mypicture.jpg"></img>
<div id="chat-box"/>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
看起来像base64字符串
PGltZyBzcmM9ImltYWdlcy9teXBpY3R1cmUuanBnIj48L2ltZz4KPGRpdiBpZD0iY2hhdC1ib3gi
Lz4KPHVsPgogIDxsaT5JdGVtIDE8L2xpPgogIDxsaT5JdGVtIDI8L2xpPgo8L3VsPg ==